克服できない問題がいくつかあります。最初に、テキストファイルのN語を数える必要があります。次に、それらを降順で印刷し、次に出現回数を印刷する必要があります。単語はアルファベット順に並べ替える必要があります。
例として、単語が6回出現する場合 "a"、単語が5回"b"、単語が5回c、nが2として与えられ、私は印刷します:
a 6
b 5
単語「la」が10回、単語「hi」が5回、「zzz」が5回、「arr」が5回出現し、nが3の場合、次のように出力します。
la 1
arr 5
こんにちは5
(zzzは意図的に省略されています)。
問題は、私のスクリプト(以下にあります)が出現回数ごとに1つの単語しか出力しないことです。
tr [:space:] '\n' <$1| uniq -c|sort -rnuk1,1|awk '{print $2,$1}'|head -n
追加機能として、ファイルの最初のm行にある単語の出現回数をスクリプトで検索したいと思います。
tr
の使用は賢いです。ただし、sort
は隣接する行のみを参照するため、uniq
を使用する前にuniq
を実行する必要があります。だから私たちは持っています
cat file.txt | sort | uniq -c | sort -r | awk '{print $2, $1}' | head -n 10
また、ご覧のとおり、この場合、ソートに-k
と-n
を使用する必要はありません(間違いではありませんが)。
最初の質問への答えは(誰かが興味を持っているなら?)
tr [:space:] '\n' <$1| sort |uniq -c|sort -k1rn -k2n|awk '{print $2,$1}'|head -12
私はまだこの部分を行う方法がわかりません。
追加機能として、ファイルの最初のm行にある単語の出現回数をスクリプトで検索したいと思います。