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 回答