1

1つまたは複数のファイルの単語の分布を印刷するために次のスクリプトを作成しました。

cat "$@" | tr -cs '[:alpha:]' '\n' | 
tr '[:upper:]' '[:lower:]' | sort | 
uniq -c | sort -n

これにより、次のような出力が得られます。

1 the
4 orange
17 cat

ただし、次のように、数字ではなく、単語が最初にリストされるように変更したいと思います(並べ替えが含まれると想定しているため、アルファベット順)。

cat 17
orange 4
the 1

これを切り替える必要がある単純なオプションはありますか?それとももっと複雑なものですか?

4

1 に答える 1

4

出力をにパイプします

awk '{print $2, $1}'

または、完全なタスクにawkを使用できます。

{
    $0 = tolower($0)    # remove case distinctions
    # remove punctuation
    gsub(/[^[:alnum:]_[:blank:]]/, "", $0)
    for (i = 1; i <= NF; i++)
        freq[$i]++
}

END {
    for (word in freq)
        printf "%s\t%d\n", word, freq[word]
}

利用方法:

awk -f wordfreq.awk input
于 2013-03-17T20:37:58.820 に答える