![perl 命令:仅在第一次出现时附加一行文本](https://linux22.com/image/931990/perl%20%E5%91%BD%E4%BB%A4%EF%BC%9A%E4%BB%85%E5%9C%A8%E7%AC%AC%E4%B8%80%E6%AC%A1%E5%87%BA%E7%8E%B0%E6%97%B6%E9%99%84%E5%8A%A0%E4%B8%80%E8%A1%8C%E6%96%87%E6%9C%AC.png)
我有这个输入文件:
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