perl 命令:仅在第一次出现时附加一行文本

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

我如何获得它?

答案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

相关内容