[Linux]awk学習ノート-語周波数統計

1660 ワード

背景


awkはファイルとデータを処理するために使用され、クラスunixの次のツールであり、プログラミング言語でもあります.条件判断をサポートし、forとwhileループをサポートします.


192.統計語周波数
bashスクリプトを書いて、テキストファイルwords.txtの各単語が現れる頻度を統計します.
方法1:
awk '{for (i=1; i <= NF; i++) {map[$i]++}}; END {for (w in map) {print w, map[w]}}' words.txt | sort -rn -k2

awk 'BEGIN {FS=" "}; {for (i=1; i <= NF; i++) {map[$i]++}}; END {for (w in map) {print w, map[w]}}' words.txt | sort -rn -k2
{map[$i]++}は、(map[$i]++)またはmap[$i]++と書くことができる.endは捨てられません.
awkのデフォルトの区切り記号は' 'なので、上記の2つの書き方は等価です.
方法2:
cat words.txt | xargs -n1 | sort | uniq -c | sort -rn -k1 | awk '{print $2, $1}'