ダブルコーテーションマークの削除

CSVファイル(カンマ区切りファイル)の各フィールドを 囲んだ
ダブルコーテーションマーク(二重引用符)を 削除する

同等のperlプログラムへ

プログラム

プログラムは以下のように多少本格的になっています。これは ただ単純にダブルコーテーションを消去するのではなく、 各フィールドの先頭と末尾がダブルコーテーションかどうか をきちんと判定し、そのダブルコーテーションだけを削除している ためです。 以下をタイプして、適当な名前でセーブしてください。ここでは rdouble.awk という名前でセーブしたことにして話を進めます。
BEGIN {
	FS =",";
}
{
	for ( i = 1; i <= NF; i++ ) {

		len = length( $i );

		# フィールドの最初の文字がダブルコートか
		if ( substr( $i, 1, 1 ) == "\"" ) {
			tmpstr[i] = substr( $i, 2, len - 1 );
		}
		else {
			tmpstr[i] = $i;
		} 

		len = length( tmpstr[i] );

		# フィールドの最後の文字がダブルコートか
		if ( substr( tmpstr[i], len , 1 ) == "\"" ) {
			tmpstr[i] = substr( tmpstr[i], 1, len - 1 );
		}
	}

	for ( i = 1; i < NF; i++ ) {
		printf( "%s\t", tmpstr[i] );
	}

	printf( "%s\n", tmpstr[NF] );
}

入力データ

入力データは、ダブルコーテーションマーク付きCSVファイルならなんでも よいのですが、せっかく細かくチェックしているので、以下のように データ中にダブルコーテーションを含んでいるデータで動作確認します。 以下のようなファイルが dat3.txt として存在するとします。
"田中","好きな文字*"
"佐藤","好きな文字="
"鈴木","好きな文字""

実行結果

ここでは、awk処理系としてgawk を利用し、 また、OSはWindowsを利用していると 仮定します。 DOS prompt 上で、
c:\awk> gawk -f rdouble.awk dat3.txt
とタイプします。
田中	好きな文字*
佐藤	好きな文字=
鈴木	好きな文字"
と出力されるはずです。 鈴木さんの好きな文字(")が消えていないところに注目してください。
メニューに戻る
Tkensaku

TKENSAKU top へ

Copyright © 2004 TKEN