如何删除 sed 中除了最上面的模式之外的所有匹配模式?

如何删除 sed 中除了最上面的模式之外的所有匹配模式?

文件.txt

1.1.1.1 abc 
1.1.1.1 ccc
1.2.2.2 ddd
1.2.2.2 qqq
1.2.2.2 zzz

预期结果:

1.1.1.1 abc
1.2.2.2 ddd

我试过:

sed -i '/1.1.1.1/d' file.txt 

sed -i '/2.2.2.2/d' file.txt 

但它会删除所有结果,而不是留下 1 个结果。如何删除所有匹配的模式但留下1?

答案1

您可以使用sort--unique选项来实现您想要的:

$ sort --unique --key=1,1 file.txt
1.1.1.1 abc
1.2.2.2 ddd

或者简而言之

sort -uk1,1 file.txt

--unique选项会抑制已处理的具有相同字段的行,并将 --key=1,1第一个字段定义为排序键(开始结束位置)。

相关内容