ファイルの単語の並べ替え

ファイルの単語の並べ替え

私には克服できないいくつかの問題があります。テキストファイルの最初の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最初に使用する必要があります。だから私たちはuniquniq

cat file.txt | sort | uniq -c | sort -r | awk '{print $2, $1}' | head -n 10

また、見てわかるように、この場合、ソートにおよび-kを使用する-nことは(間違っていませんが)不要です。

関連情報