頻度カウント(ソート済みデータ対応)

テキストデータファイルの各データの頻度を数える
あらかじめソート済みのデータに対応

同等のperlプログラムへ

概要

このページ と同様の問題ですが、こちらではあらかじめ ソートが済んでいるデータを処理します。 連想配列というのは 結構難しい(特に変にアセンブラやCなどの低レベル言語に 慣れた人にとっては)ものなので、 こちらのプログラムも使い道はあると思います。

プログラム

プログラムは以下のようになります。 エディタを開き以下をタイプして、適当な名前でセーブしてください。ここでは c_freq2.awk という名前でセーブしたことにして話を進めます。
BEGIN {
	PREV = "";
	PREV_COUNT = 0;
}
{
	if ( ( $0 != PREV ) && ( PREV != "" ) ) {
		printf( "%s\t%d\n", PREV, PREV_COUNT );
		PREV_COUNT = 0;
	}
	
	PREV_COUNT++;
	PREV = $0;
}
END {
	printf( "%s\t%d\n", PREV, PREV_COUNT );
}

入力データ

既に
鈴木
佐藤
田中
佐藤
鈴木
田中
佐藤
鈴木
鈴木
というファイルが dat7.txt として存在しています。 このままではソートが済んでいないので
c:\awk> sort dat7.txt > dat8.txt
として ソート済みデータ を用意してください。

実行結果

ここでは、awk処理系としてgawkを利用し、 また、OSはWindowsを利用していると 仮定します。 DOS prompt 上で、
c:\awk> gawk -f c_freq2.awk dat8.txt
とタイプします。
佐藤	3
田中	2
鈴木	4
と出力されるはずです。
メニューに戻る
Tkensaku

TKENSAKU top へ

Copyright © 2004 TKEN