Perl:匹配一个字符串并删除除第一次出现以外的所有内容

时间:2014-05-08 01:41:12

标签: regex perl

我在perl中有一个文件,其中包含以下内容

abc
text1 
text2
text3
abc
text4
text5
abc
abc

最终输出:

abc
text1
text2
text3
text4
text5

我想使用perl one liner或脚本来保留第一个abc并删除其余部分。 在我的脚本中,我使用模式匹配运算符m?/abc/来查找第一个模式,但无法找到删除其余模式的方法。请帮我一样

1 个答案:

答案 0 :(得分:3)

假设您要删除包含第二次及以后出现的abc的整行:

perl -ne 'print if !/abc/ || !$n++' < infile > outfile

如果您要删除包含abc 而不包含的行,请将/abc/更改为/^abc$/