Grep 有一个计数选项。
如果您设备的正则表达式功能强大到可以直接匹配电子邮件,您可以使用一个命令计算所有出现次数:
例如
$ echo -e "1\n\2\n3\n\4" | grep [0-9] -c
4
也就是说,我认为你正在做的最好是使用 sed 和 awk:
sed 's/@.*//' tmp/mails | sort | uniq | \
while read name ;
do
echo $name;
awk '$1 ~ /'$name'/ { ++c; } END {print c;}' tmp/mails ;
done
cat tmp/mails:
$ cat tmp/mails
arne@gmail.com
arnt@treemail.com
jonas@hotmail.com
arne@gmail.com
kari@yahoo.no
alex@wee.moo
arne@gmail.com
jonas@hotmail.com
kari@yahoo.no
jonas@hotmail.com
kari@yahoo.no
$ sed 's/@.*//' tmp/mails | sort | uniq | while read name ;do echo $name; awk '$1 ~ /'$name'/ { ++c; } END {print c;}' tmp/mails ;done
alex
1
arne
3
arnt
1
jonas
3
kari
3