5

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

sort -u myFile

没有排序的性能影响。

4

1 回答 1

18

删除重复的行:

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

这就是著名的 awk one-liner。inet上有很多解释。是一种解释:

这个单行是非常惯用的。它记录在关联数组“a”中看到的行(数组在 Awk 中总是关联的),同时测试它之前是否看到过该行。如果它之前看到过该行,那么 a[line] > 0 和 !a[line] == 0。任何计算结果为 false 的表达式都是空操作,任何计算结果为 true 的表达式都等于 "{ print }”。

于 2013-04-03T20:33:04.847 回答