Bash 如何使用awk和sed计算列中的元素数

Bash 如何使用awk和sed计算列中的元素数,bash,awk,sed,Bash,Awk,Sed,我的电子邮件帐户收件箱中有一些电子邮件: 12:00 <harry@hotmail.com> 12:20 <harry@hotmail.com> 12:22 <jim@gmail.com> 12:30 <clare@bbc.org> 12:40 <harry@hotmail.com> 12:50 <jim@gmail.com> 12:55 <harry@hotmail.com> 谢谢你的帮助 您可能希望在排序之

我的电子邮件帐户收件箱中有一些电子邮件:

12:00 <harry@hotmail.com>
12:20 <harry@hotmail.com>
12:22 <jim@gmail.com>
12:30 <clare@bbc.org>
12:40 <harry@hotmail.com>
12:50 <jim@gmail.com>
12:55 <harry@hotmail.com>

谢谢你的帮助

您可能希望在
排序之后使用
uniq

$ sort file | uniq -c
      1 <clare@bbc.org>
      4 <harry@hotmail.com>
      2 <jim@gmail.com>
我们首先必须对文件进行
排序
,以便
uniq
正常工作。从man uniq的
开始:

从输入中过滤相邻的匹配行


下面是如何使用
awk

awk '{a[$1]++} END {for (i in a) print a[i]"\t"i}' file
4       <harry@hotmail.com>
1       <clare@bbc.org>
2       <jim@gmail.com>
awk'{a[$1]+}END{for(a中的i)打印[i]“\t”i}文件
4.
1.
2.

使用
sort | uniq-c
可以获得每行的出现次数。为什么只添加一列而不通知任何回答者?尝试展示你的尝试并提供反馈。对不起,我是这个论坛的新手,怎么做?
$ printf "Number of email\temail\n%s\n" "$(sort file | uniq -c)"
Number of email email
      1 <clare@bbc.org>
      4 <harry@hotmail.com>
      2 <jim@gmail.com>
awk '{a[$1]++} END {for (i in a) print a[i]"\t"i}' file
4       <harry@hotmail.com>
1       <clare@bbc.org>
2       <jim@gmail.com>