如何对文件中每个日期的行数进行排序?

如何对文件中每个日期的行数进行排序?

我有一个这样的文件:

$ more messages
Jan  2 random text
Jan  2 random text
Jan  3 random text
Jan  2 random text
Jan  3 random text
Jan  3 random text
Jan  3 random text

我想要这个,使用sort

Jan  2 : 3
Jan  3 : 4

答案1

您可以使用cut拆分您感兴趣的字符,然后sort计算uniq -c不同日期出现的次数:

$ < input cut -c1-6 |sort |uniq -c
  3 Jan  2
  4 Jan  3

或者awk如果您对输出格式有特殊要求,请使用:

$ awk '{a[substr($0, 1, 6)] += 1} END { for (x in a) printf "%s : %d\n", x, a[x] }' < x | sort
Jan  2 : 3
Jan  3 : 4

第一个块使用关联数组来计算每个日期出现的次数,最后的 END 块仅打印出日期及其计数。sort之后的输出,因为无法保证键从数组中出来的顺序。

相关内容