- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:awkで別のファイルを参照して、検索結果を得たい。)
awkで別ファイルを参照して検索結果を得る方法
このQ&Aのポイント
- awkを使って別のファイルを参照して、検索結果を得る方法について教えてください。
- targetファイルとobjectファイルを用意し、targetファイル内の要素をobjectファイルで検索するスクリプトを作成しましたが、動作しません。
- スクリプトの書き方や実行方法など、御助言を頂ければ幸いです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
$ awk -f select.awk target.txt object.txt 5 2,aa a 2,cc c 2,aa この↑結果がほしいのかな? [select.awk] BEGIN { FS="," } #targetファイル読み込み FILENAME == ARGV[1]{ tgt[FNR]=$1 no_tgt = FNR } #objectファイル読み込み FILENAME == ARGV[2]{ obj1[FNR]=$1 obj2[FNR]=$2 no_obj = FNR } #相互に検索 END{ for (i = 1; i <= no_tgt; i++){ for (j = 1; j <= no_obj; j++){ if (tgt[i] == obj1[j]) { print tgt[i],obj1[2]","obj2[j] } }}} それとも、こっち↓? $ awk -f select.awk target.txt object.txt 5 5,aa a 1,aa a 5,aa a 9,aa a a,cc a c,aa a g,aa c 3,cc c 7,cc c a,cc c c,aa c e,cc c i,cc これなら、元のコードの if (dat1[i]~/dat2[j]/) { print dat1[i],dat2[j] } を if (dat2[j] ~ dat1[i]) { print dat1[i],dat2[j] } にかえればできるよ。
お礼
そうか、データ構造をきちんと把握した上で読み込み、==で対応させれば良いのですね。 ありがとうございました!大変勉強になりました。