有没有一种方法可以通过命令行工具过滤掉文件中的所有唯一行,而无需对行进行排序?我基本上想这样做:
sort -u myFile
没有排序的性能损失。
删除重复的行:
awk '!a[$0]++' file
这是著名的awk单线。关于inet有很多解释。这是一种解释:
这种单线是非常习惯的。它注册在关联数组“ a”中看到的行(数组在Awk中始终是关联的),并同时测试是否看到过该行。如果已经看过前面的行,则a [line]> 0且!a [line] ==0。任何计算结果为false的表达式均为空操作,而任何评估为true的表达式均等于“ {print }”。