Используя sed, как я могу добавить строку в строки, которые содержат шаблон и к которому еще не добавлена ​​строка? - PullRequest
0 голосов
/ 01 декабря 2018

Eq.У меня есть файл со следующим содержанием

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

I, чтобы написать команду 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 голосов
/ 01 декабря 2018

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
...