我是编程新手,我想做的是以下几点:
例如我有:
a@hotmail.com
b@hotmail.com
c@hotmail.com
g@gmail.com
s@gmail.com
h@msn.com
h@yahoo.com
我需要找到两个最常用的电子邮件域。在示例中,即hotmail.com
和gmail.com
。
我如何使用 shell 脚本来做到这一点?
您可以使用uniq -c
来计算已排序项目列表中每个项目的数量。有了这个,我们只需适当地切割和排序:
$ cut -d @ -f 2 yourlist | sort | uniq -c | sort -rn
3 hotmail.com
2 gmail.com
1 yahoo.com
1 msn.com
$
这可以让你开始。它计算每个域的出现次数,然后按计数降序对它们进行排序。
awk -F'@' 'domains[$2]++{} END{ for (d in domains) print d, domains[d]; }' | sort -rnk2