如何排序,uniq和显示超过X次的行

时间:2013-11-22 14:58:08

标签: bash sorting uniq

我有一个这样的文件:

80.13.178.2
80.13.178.2
80.13.178.2
80.13.178.2
80.13.178.1
80.13.178.3
80.13.178.3
80.13.178.3
80.13.178.4
80.13.178.4
80.13.178.7

我需要显示重复行的唯一条目(类似于uniq -d),但只显示 more 的条目而不仅仅是两次(两次是一个示例,因此可以灵活地定义下限。)< / p>

在查找具有三次或更多次出现的条目时,此示例的输出应如下所示:

80.13.178.2
80.13.178.3

2 个答案:

答案 0 :(得分:15)

将输出从uniq -cd提供给awk

sort test.file | uniq -cd | awk -v limit=2 '$1 > limit{print $2}'

答案 1 :(得分:9)

使用纯awk

awk '{a[$0]++}END{for(i in a){if(a[i] > 2){print i}}}' a.txt 

迭代文件并计算每个IP的出现次数。在文件的末尾,它输出每次发生超过2次的IP。