- 締切済み
ファイル内のキーを元に別のファイルをgrepする
初めて質問させていただきます。 Perlを使って下記のことをじっそうしたいと思っています。 □テーブルから抽出したdata.csvの中に、外字文字コードが存在するか確認する。もし存在する場合は、その行を別のファイル(output.csv)へ出力する。 Perlで下記のような構造でプログラミングしたいと思っていますが、知識が乏しいため、どなたかサンプルコードをご提供いただけますでしょうか。 □外字文字コードをもつtest.txtを一行ずつ読み込み、そちらを検索キーとして、data.csv内をgrepし、該当行があったら、output.csvへ出力する。 test.txt \x40\xB0, \x41\xB1, \x43\xB2
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- ORUKA1951
- ベストアンサー率45% (5062/11036)
回答No.1
そもそも、そのテキストファイルがどのような文字コードで作成されているかによってスクリプトは変わります。 外字をどの範囲にするか、例えばUNICODEの場合は、ギリシャ文字やハングル、アラビア文字を外字とは扱いませんが、Shift_JISの場合は外字に含めないとまずいでしょう。 open でファイルを開いて while(<IN>){}などで一行ずつパターンマッチを行い。 >もし存在する場合は、その行を別のファイル(output.csv)へ出力する。 存在すれば、その行を、新しいデータに追記する。 質問と、出力形式がマッチしませんね。その文字だけでしたら、全体を一行として文字を探さないとならないです。そちらのほうが厄介です。一文字一文字の区切りを判断しなければならない。文字境界の判別は意外と厄介です。半角文字、制御文字、全角文字を区別しないとどこまでが一文字か分からない。 最後に、OUTでファイルに書き出せばよい。
お礼
迅速にご回答いただきありがとうございます。
補足
ご回答、ありがとうございます。 遅くなって申し訳ございません。 また、私の質問内容がわかりづらいようですみません。 Shift-Jisの範囲です。また、外字文字コードの範囲は決まっており、外字文字コードを持つリストファイル(test.txt)はすでに用意されているものとして考えていただければと思います。 また、今回Perlのプログラム知識が乏しいため、 今回の要望を実現するためのプログラムコードでのご回答いただけると嬉しいです。