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

hap*_*497 88 linux command-line ubuntu

在 linux 中,我可以使用grep mySearchString myFile.txt. 我怎样才能得到唯一的结果?

Joh*_*n T 144

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

例子:

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

根据数据,您可能还想使用某些开关。

  • 使用`sort -u`代替`sort | 唯一的`。它节省了一个进程,减少了总 I/O,并减少了必须进行的比较总数。 (52认同)
  • @John T - 如果数据没有排序,我建议在 `uniq` 之前使用 `sort`。否则`uniq` 将无法完全工作。 (11认同)

小智 13

您可以使用:

grep -rohP "(mySearchString)" . | sort -u
Run Code Online (Sandbox Code Playgroud)

-r:递归

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

-h:不打印文件名

-P:Perl 风格的正则表达式(你可以使用 -E 代替,具体取决于你的情况)

sort -usort | uniq正如@Chris Johnsen 指出的那样,比 更好。