команда perl: Добавить строку текста только при первом появлении

У меня есть этот входной файл:

text1
match
text2
match
text3

У меня есть команда, которая вставляет строку перед совпадением:

perl -lpe 'print "prepend_me" if /^match$/ && ++$i == 1' text.txt

И его вывод:

text1
prepend_me
match
text2
match
text3

Теперь мне нужна команда, которая вставляет строку после совпадения:

text1
match
append_me
text2
match
text3

Как мне это получить?

0
задан 23 November 2020 в 17:27

1 ответ

Вы можете использовать конкатенацию строк с переменной по умолчанию $_:

$ perl -lpe '$_ .= "\nappend_me" if /^match$/ && ++$i == 1' text.txt
text1
match
append_me
text2
match
text3

В качестве альтернативы используйте -ne и явный print

perl -lne 'print; print "append_me" if /^match$/ && ++$i == 1' text.txt
1
ответ дан 23 November 2020 в 14:39

Другие вопросы по тегам:

Похожие вопросы: