我有一个像这样的模式 block :
<domain hotmail.com>
blah
blah
blah
</domain>
我希望最终输出如下所示:
#<domain hotmail.com>
#blah
#blah
#blah
#</domain>
使用此命令,我可以获得除第一行之外的所有内容,该行是启动模式的匹配项:
sed -e "/\(^<domain hotmail.com>\)/{:a;n;s/^/#/;/<\/domain>/!ba;}" file
这给了我这个:
<domain hotmail.com>
#blah
#blah
#blah
#</domain>
和 之间的行数会有所不同。上面的代码适用于方差,但不适用于第一行。如何获得第一行注释?
谢谢, 约翰
最佳答案
sed '/<domain hotmail\.com>/,/<\/domain>/ s/^/#/'
测试:
sed '/<domain hotmail\.com>/,/<\/domain>/ s/^/#/' <<END
foo
<domail yahoo.com>
blah
blah
</domain>
qux
<domain hotmail.com>
blah
blah
blah
</domain>
bar
<domain gmail.com>
blah
</domain>
baz
END
foo
<domail yahoo.com>
blah
blah
</domain>
qux
#<domain hotmail.com>
#blah
#blah
#blah
#</domain>
bar
<domain gmail.com>
blah
</domain>
baz
关于sed - 如何注释应注释所有行的模式 block 的第一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26536213/