如何过滤掉文件中的所有唯一行?

时间:2013-04-03 20:28:48

标签: linux bash shell command-line

有没有办法通过命令行工具过滤掉文件中的所有唯一行而不对行进行排序?我想基本上这样做:

sort -u myFile

没有排序的性能影响。

1 个答案:

答案 0 :(得分:17)

删除重复的行:

awk '!a[$0]++' file

这是着名的awk单行。对inet有很多解释。 Here是一个解释:

  

这个单行是非常惯用的。它记录了在中看到的线条   关联数组“a”(数组在Awk中始终是关联的)和at   同时测试它是否曾见过这条线。如果它已经看到了   之前的行,然后是[line]> 0和!a [line] == 0.任何表达式   计算结果为false是一个无操作,以及任何表达为eval的表达式   等于“{print}”。