一尘不染

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

linux

有没有一种方法可以通过命令行工具过滤掉文件中的所有唯一行,而无需对行进行排序?我基本上想这样做:

sort -u myFile

没有排序的性能损失。


阅读 238

收藏
2020-06-03

共1个答案

一尘不染

删除重复的行:

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

这是著名的awk单线。关于inet有很多解释。是一种解释:

这种单线是非常习惯的。它注册在关联数组“ a”中看到的行(数组在Awk中始终是关联的),并同时测试是否看到过该行。如果已经看过前面的行,则a
[line]> 0且!a [line] ==0。任何计算结果为false的表达式均为空操作,而任何评估为true的表达式均等于“ {print }”。

2020-06-03