在bash中查找文件中最频繁的行
假设我有一个类似如下的文件:在bash中查找文件中最频繁的行,bash,lines,Bash,Lines,假设我有一个类似如下的文件: Abigail 85 Kaylee 25 Kaylee 25 kaylee Brooklyn Kaylee 25 kaylee 25 我想找出重复次数最多的一行,输出的必须是刚好的那一行 我试过了 sort list | uniq -c 但我需要干净的输出,只是重复次数最多的一行(在本例中为Kaylee 25)。Kaizen~ $ sort zlist | uniq -c | sort -r | head -1| xargs | cut -d" " -f2-
Abigail 85
Kaylee 25
Kaylee 25
kaylee
Brooklyn
Kaylee 25
kaylee 25
我想找出重复次数最多的一行,输出的必须是刚好的那一行
我试过了
sort list | uniq -c
但我需要干净的输出,只是重复次数最多的一行(在本例中为Kaylee 25)。Kaizen~
$ sort zlist | uniq -c | sort -r | head -1| xargs | cut -d" " -f2-
Kaylee 25
这有用吗
$ uniq -c list | sort -r | head -1 | awk '{$1=""}1'
Kaylee 25
这就是你要找的吗?awk-
awk '{a[$0]++; if(m<a[$0]){ m=a[$0];s[m]=$0}} END{print s[m]}' t.lis
awk'{a[$0]++;如果(mIMHO),这些答案都不会正确排序结果。原因是排序,如果没有-n
,选项将按如下方式排序“1101234
”,而不是“12341012
”。因此,添加-n
:
sort zlist | uniq -c | sort -n -r | head -1
当然,您可以像前面所描述的那样通过管道将其传输到xargs或sed。我认为在这里不需要调用xargs
。xargs…它可以限制空格,简单明了。如果您喜欢,还可以使用translate!!xargs
也会限制有效的连续空格。您可能需要重新设置移动xargs
并使用其他方法,如sed s/^\s\+[0-9]\+\s/'
删除计数列,而不是cut
使用sort--version sort
而不是sort-r
。例如,--version sort
将正确输出“351,51”,而-r
将输出“5351”。请注意,此解决方案是错误的,因为第二个排序
没有-n
(由)有趣且不同的解决方案。另请参阅