linux - 如何在Linux终端中打印文件中最频繁的行?

标签 linux file unix terminal

我有包含以下行的文件:

<host>\t<ip>\n

我需要打印前 5 个最常见的 IP。我怎样才能做到这一点?

例如,如果我需要从此文件中打印 3 个最常见的 IP:

host1   192.168.0.26
host2   192.168.0.26
host3   192.168.0.23
host4   192.168.0.24
host5   192.168.0.26
host6   192.168.0.26
host7   192.168.0.25
host8   192.168.0.26
host9   192.168.0.26
host18  192.168.0.22
host22  192.168.0.22
host24  192.168.0.23

我会打印: 192.168.0.26 192.168.0.22 192.168.0.23

最佳答案

以下内容应该有效。请注意,即使有 10 个具有相同频率的 IP,它也会返回 5 行。

cut -f2 file | sort | uniq -c | sort -n | head -n5

关于linux - 如何在Linux终端中打印文件中最频繁的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25894079/

相关文章:

bash - 在 Ubuntu 中按字母顺序重命名多个文件

linux - 什么是 tcpdump 单行​​转储与给定子字符串匹配的 TCP 流?

php - 我的网站随机变慢并且图表显示没有负载

linux - pkmap_page_table在k图上如何使用?

linux - 在 Linux 中删除文件所需的最小文件权限

java - 无法通过java代码更改文件夹的权限

c++ - C++ 中的 getline() 函数不起作用

linux - 找不到包 'libxml-2.0'

linux - 在 Vim 中打开最后一个命令的输出

java - 原子文件写入操作(跨平台)