Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何对出现次数超过X的行进行排序、uniq和显示_Bash_Sorting_Uniq - Fatal编程技术网

Bash 如何对出现次数超过X的行进行排序、uniq和显示

Bash 如何对出现次数超过X的行进行排序、uniq和显示,bash,sorting,uniq,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),但只显示出现两次以上的条目(两次是一个示例,因此可以灵活地定义下限) 当查找出现三次或三次以上的条目时,此示例的输出应如下所示: 80.13.178.2 80.

我有这样一个文件:

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),但只显示出现两次以上的条目(两次是一个示例,因此可以灵活地定义下限)

当查找出现三次或三次以上的条目时,此示例的输出应如下所示:

80.13.178.2
80.13.178.3

将输出从
uniq-cd
馈送到
awk

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

使用纯
awk

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

它遍历文件并统计每个IP的发生次数。在文件末尾,它会输出每一个发生2次以上的IP。

Perfect!谢谢,这个对我有用:cat log.txt | sort | uniq-d-c | awk'$1>30{print$2}'这是一个更干净、更简单的解决方案。。感谢you@Kent感谢贝尔实验室!:)