Sed 仅匹配并替换某些字符

Sed 仅匹配并替换某些字符

我有多个格式非常相似的字符串。

(#1111111)
(#4444444)

我试图使用 sed 提供输出:

1111111
4444444

我努力了:

sed  's/(#[0-9]+)/^[0-9]+/g'

看起来匹配正常,但是替换不起作用。

答案1

鉴于问题的格式,有两种方法可以做到这一点:

sed 's/.*#\(.*\))/\1/' file

这将打印出#和 之间的所有内容,在本例中为()

也可以这样做:

sed -e 's|^(#||g' -e 's|)$||g' file

这将从(#字符串的开头和)结尾删除。

输出:

1111111
4444444

如果是文件,则可以-i在 sed 后添加以就地编辑它。对于 stdout,将提供它的命令通过管道传输到sed

如果这是文件或其他输出,并且存在差异,则必须调整命令。我只是根据你在问题中提供的内容进行操作。

相关内容