使用sed,如何将字符串附加到包含模式且尚未附加字符串的行?

时间:2018-12-01 10:08:48

标签: sed

式 我有以下内容的文件

ERR001 just some random text
ERR002 blah blah blah
ERR001 again some text //IGNORE
ERR001 blah blahblah blah blah
ERR002 abc def ghi

我编写一个sed命令,将// IGNORE附加到所有具有ERR001但尚未附加// IGNORE的行。因此sed命令应为上述文件提供以下输出

ERR001 just some random text //IGNORE
ERR002 blah blah blah
ERR001 again some text //IGNORE
ERR001 blah blahblah blah blah //IGNORE
ERR002 abc def ghi

1 个答案:

答案 0 :(得分:0)

sed 解决方案:

sed '/\/\/IGNORE$/! s/^ERR001 .*/& \/\/IGNORE/' inputfile
  • /\/\/IGNORE$/!-否定匹配,确保行不以//IGNORE结尾(!-否定符号)
  • s/^ERR001 .*/& \/\/IGNORE/-替换以ERR001开头的行

输出:

ERR001 just some random text //IGNORE
ERR002 blah blah blah
ERR001 again some text //IGNORE
ERR001 blah blahblah blah blah //IGNORE
ERR002 abc def ghi