加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-13 19:22:51 所属栏目:Linux 来源:网络整理
导读:我有一个字符串文件: string-string-123string-string-123string-string-123string-string-12345string-string-12345string-string-12345-123 如何检索bash中最常见的行(string-string-123)? 最佳答案 你可以使用awk来做到这一点: awk '{++a[$0]}END{for(

我有一个字符串文件:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读