私には克服できないいくつかの問題があります。テキストファイルの最初のN語の数を数える必要があります。次に降順に印刷し、発生回数を印刷する必要があります。単語はアルファベット順に並べる必要があります。
たとえば、「」という単語が6回表示された場合ㅏ」、5ワード「雨」、5ワード氏n は 2 です。以下を印刷します。
6
B5
「la」という単語が10回発生し、「hi」という単語が5回発生し、「zzz」が5回発生し、「arr」が5回発生し、nが3の場合、以下を印刷します。
10を引く
到着5
こんにちは5
(zzzはわざと省略しました。)
問題は、私のスクリプト(下)が一度に1つの単語だけを印刷することです。
tr [:space:] '\n' <$1| uniq -c|sort -rnuk1,1|awk '{print $2,$1}'|head -n
アドインで、スクリプトがファイルの最初のm行から単語の発生回数を取得できたらと思います。
答え1
最初の質問に対する答えは(もし興味がある人ですか?)です。
tr [:space:] '\n' <$1| sort |uniq -c|sort -k1rn -k2n|awk '{print $2,$1}'|head -12
この部分はまだ何をすべきかわかりません。
アドインで、スクリプトがファイルの最初のm行から単語の発生回数を取得できたらと思います。
答え2
あなたの使い方はtr
賢明です。ただし、隣接する行のみを表示するため、sort
最初に使用する必要があります。だから私たちはuniq
uniq
cat file.txt | sort | uniq -c | sort -r | awk '{print $2, $1}' | head -n 10
また、見てわかるように、この場合、ソートにおよび-k
を使用する-n
ことは(間違っていませんが)不要です。