如何从grep输出中过滤出唯一结果?


75

在linux中,我可以使用来从文件grep字符串grep mySearchString myFile.txt。我如何才能获得唯一的结果?

Answers:


125

您可以使用sortuniq实用程序来实现。

例:

[john @ awesome〜] $ echo -e“ test \ ntest \ ntest \ nanother test \ ntest”
测试
测试
测试
另一个测试
测试
[john @ awesome〜] $ echo -e“ test \ ntest \ ntest \ nanother test \ ntest” | 排序 优衣库
另一个测试
测试

根据数据,您可能还希望利用某些开关。


9
@John T- 如果不订购数据,我建议使用sort之前uniq。否则uniq将无法完全正常工作。
Studer

现在我可以投票了!您还帮助我在这里编写其他脚本;)
Studer 2010年

42
使用sort -u代替sort | uniq。它节省了过程,减少了总I / O,并减少了必须进行的比较总数。
克里斯·约翰森

@ChrisJohnsen您应该将该评论作为答案,因为它是比当前给出的答案更好的解决方案
Nico Van Belle

1

您可以使用:

grep -rohP "(mySearchString)" . | sort -u

-r:递归

-o:仅打印文本的匹配部分

-h:不打印文件名

-P:Perl样式正则表达式(根据情况,可以使用-E代替)

sort -usort | uniq@Chris Johnsen指出的要好。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.