我有一个字符串文件:
string-string-123
string-string-123
string-string-123
string-string-12345
string-string-12345
string-string-12345-123
如何检索bash中最常见的行(string-string-123)?
最佳答案
你可以使用awk来做到这一点:
原文链接:https://www.f2er.com/linux/440674.htmlawk '{++a[$0]}END{for(i in a)if(a[i]>max){max=a[i];k=i}print k}' file
数组a保持每行的计数.读取文件后,我们遍历它并找到具有最大计数的行.
或者,您可以通过在处理文件期间指定行来跳过END块中的循环:
awk 'max < ++c[$0] {max = c[$0]; line = $0} END {print line}' file
感谢glenn jackman这个有用的建议.
正确地指出,上述两种方法仅打印出平局情况下最常出现的一条线.以下版本将打印出所有最常出现的行:
awk 'max<++c[$0] {max=c[$0]} END {for(i in c)if(c[i]==max)print i}' file