linux – 在bash中查找文件中最常见的行

前端之家收集整理的这篇文章主要介绍了linux – 在bash中查找文件中最常见的行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个字符串文件

string-string-123
string-string-123
string-string-123
string-string-12345
string-string-12345
string-string-12345-123

如何检索bash中最常见的行(string-string-123)?

最佳答案
你可以使用awk来做到这一点:

awk '{++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
原文链接:https://www.f2er.com/linux/440674.html

猜你在找的Linux相关文章