0

我是编程新手,我想做的是以下几点:

例如我有:

a@hotmail.com
b@hotmail.com
c@hotmail.com
g@gmail.com
s@gmail.com
h@msn.com
h@yahoo.com

我需要找到两个最常用的电子邮件域。在示例中,即hotmail.comgmail.com

我如何使用 shell 脚本来做到这一点?

4

2 回答 2

2

您可以使用uniq -c来计算已排序项目列表中每个项目的数量。有了这个,我们只需适当地切割和排序:

$ cut -d @ -f 2 yourlist | sort | uniq -c | sort -rn

  3 hotmail.com
  2 gmail.com
  1 yahoo.com
  1 msn.com

$
于 2013-10-11T00:41:57.637 回答
1

这可以让你开始。它计算每个域的出现次数,然后按计数降序对它们进行排序。

awk -F'@' 'domains[$2]++{} END{ for (d in domains) print d, domains[d]; }' | sort -rnk2
于 2013-10-11T00:23:58.237 回答