私はプログラミングが初めてで、やりたいことは次のとおりです。
たとえば、私は持っています:
a@hotmail.com
b@hotmail.com
c@hotmail.com
g@gmail.com
s@gmail.com
h@msn.com
h@yahoo.com
最も頻繁に使用される 2 つの電子メール ドメインを見つける必要があります。例では、hotmail.com
とgmail.com
です。
シェルスクリプトでそれを行うにはどうすればよいですか?
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