我有一个这样的文件:
$ 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
之后的输出,因为无法保证键从数组中出来的顺序。