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>