如何在Linux中使用bash按出现次数对字符串排序?

时间:2019-05-31 16:15:31

标签: bash sorting awk text-processing

我有一个包含以下行的文件:

May 25 05:34:16 192.0.2.2
May 25 05:34:16 192.0.2.1
May 25 05:34:16 192.0.1.5
May 25 05:38:16 192.0.2.2

现在我想获取IP的出现次数,并按出现次数最多列出它们,并列出它们出现的频率,就像这样:

2 May 25 05:34:16 192.0.2.2
1 May 25 05:34:16 192.0.2.1
1 May 25 05:34:16 192.0.1.5

最好是带有awk的bash衬垫。

1 个答案:

答案 0 :(得分:3)

使用GNU sort和GNU uniq:

sort -k4 file | uniq --count --skip-fields=3

输出:

      1 May 25 05:34:16 192.0.1.5
      1 May 25 05:34:16 192.0.2.1
      2 May 25 05:34:16 192.0.2.2

请参阅:man uniq