Mario Palumbo Asked: 2020-11-19 02:07:01 +0800 CST2020-11-19 02:07:01 +0800 CST 2020-11-19 02:07:01 +0800 CST perl 命令:仅在第一次出现时添加一行文本 772 我有这个输入文件: text1 match text2 match text3 我有这个命令: perl -lpe 'print "prepend_me" if /^match$/' text.txt 它的输出是: text1 prepend_me match text2 prepend_me match text3 但我想要: text1 prepend_me match text2 match text3 我怎么得到这个? bash perl 2 个回答 Voted Best Answer Steffen Ullrich 2020-11-19T03:20:05+08:002020-11-19T03:20:05+08:00 只需计算它已经匹配的频率并仅在第一次匹配时添加前缀: perl -lpe 'print "prepend_me" if /^match$/ && ++$count == 1' text.txt BeastOfCaerbannog 2020-11-19T11:49:25+08:002020-11-19T11:49:25+08:00 你也可以这样做sed: sed '0,/match/ s/\(match\)/prepend_me\n\1/' text.txt 0,/match/用于编辑从开头 ( ) 到( 0) 的第一个匹配的文本。match/match/ s/\(match\)/prepend_me\n\1/捕获match( \(match\)) 并将其替换为所需的文本 ( prepend_me+ linebreak ( \n) + 捕获的匹配 ( \1))。
只需计算它已经匹配的频率并仅在第一次匹配时添加前缀:
你也可以这样做
sed
:0,/match/
用于编辑从开头 ( ) 到(0
) 的第一个匹配的文本。match
/match/
s/\(match\)/prepend_me\n\1/
捕获match
(\(match\)
) 并将其替换为所需的文本 (prepend_me
+ linebreak (\n
) + 捕获的匹配 (\1
))。