在一个文件中,我有以下几行
foo
bar
xxx
yyy
zzz
我需要注释掉 xxx、yyy、zzz 行。所以我运行以下命令:
sed -e '/xxx/ s/^#*/#/' -i file
sed -e '/yyy/ s/^#*/#/' -i file
sed -e '/zzz/ s/^#*/#/' -i file
出去
foo
bar
#xxx
#yyy
#zzz
我怎样才能在循环中执行此操作(检查我感兴趣的所有行是否已评论,如果没有,请评论它们)?
谢谢
PD:如果我知道行号,这个命令会很有用,但我不知道,因为它可能会有所不同。
sed -e '2s/^/#/' -e '5s/^/#/' -e '7s/^/#/' file
PD:我也不能使用 EOF,因为每一行都是正则表达式
使用以下示例数据
file
:使用
sed
that has-E
来使用扩展正则表达式:与
awk
:使用标准
sed
:鉴于此示例文本:
你可以使用这个命令:
^[^#]*
解析不以#
.\(xxx\|yyy\|zzz\)
搜索或xxx
,捕获它们,并替换和 捕获的模式。yyy
zzz
#
#\1