テキストデータファイルの各データの頻度を数える
一般のデータファイルに対応
BEGIN {
count = 0;
}
{
if ( DATA[$0] == 0 ) {
DATA_NAME[count] = $0;
count++;
}
DATA[$0]++;
}
END {
for ( i = 0; i < count; i++ ) {
printf( "%s\t%d\n", DATA_NAME[i], DATA[DATA_NAME[i]] );
}
}
というファイルが dat7.txt として存在するとします。鈴木 佐藤 田中 佐藤 鈴木 田中 佐藤 鈴木 鈴木
とタイプします。c:\awk> gawk -f c_freq1.awk dat7.txt
と出力されるはずです。鈴木 4 佐藤 3 田中 2
このような連想配列をawkで使うときには、
このプログラムのように自分でデータ名を
管理するのではなくinオペレータを用いて、
の形式を使うほうがスマートだとされています。
しかし、この方法ですと(出現した)順序が保たれませんし、
連想配列のない一般の言語への移植(自分でhashtableを作る)
する場合のことを考え、このプログラムはあえてこうしています。
name in DATA
Copyright © 2004 TKEN