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

xdh*_*ore 5 linux bash shell command-line

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

sort -u myFile
Run Code Online (Sandbox Code Playgroud)

没有排序的性能.

Ken*_*ent 18

删除重复的行:

awk '!a[$0]++' file
Run Code Online (Sandbox Code Playgroud)

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

这种单线是非常惯用的.它记录了关联数组"a"中看到的线(数组在Awk中始终是关联的),同时测试它是否曾经看过该线.如果它之前已经看到过该行,那么[line]> 0和!a [line] == 0.任何计算结果为false的表达式都是no-op,任何eval为true的表达式都等于"{print }".

  • 经典的解决方案,你应该解释它是如何工作的;但是;} (3认同)