長さが異なる2つのtxtファイルがあります。
File 1:
Albania 20200305 0
Albania 20200306 0
Albania 20200307 0
Albania 20200308 0
Albania 20200309 3
Albania 20200310 7
Albania 20200311 4
Albania 20200312 2
File 2:
Europe Albania 20200309 2
Europe Albania 20200310 6
Europe Albania 20200311 10
Europe Albania 20200312 11
Europe Albania 20200313 23
Europe Albania 20200314 33
File1の1列目と2列目がFile2の2列目と3列目と同じである場合、File2の最後にFile1の3.列を追加するFile3を作成したいと思います。次のようになります。
File3:
Europe Albania 20200309 2 3
Europe Albania 20200310 6 7
Europe Albania 20200311 10 4
Europe Albania 20200312 11 2
私が試してみました
awk 'NR==FNR{A[$1,$2]=$3;next} (($2,$3) in A) {print $0, A[$1,$2]}' file1.txt file2.txt > file3.txt
ただし、ファイル2を印刷するだけで、File1の3番目の列は追加されません。
問題を解決するのを手伝ってくれませんか。
前もって感謝します!
あなたのアプローチは正しいですが、のように印刷する必要がありA[$2,$3]
ますがA[$1,$2]
、配列Aに存在しないものを使用しています(file1の1番目、2番目の列はfile2の2番目と3番目の列と比較する必要があるため)したがって、現在の行の値のみを印刷しますfile3のfile2。
awk 'NR==FNR{a[$1,$2]=$3;next} (($2,$3) in a) {print $0, a[$2,$3]}' file1 file2
リンクも参照してください(ここに素敵なリンクを提供してくれたJamesに感謝します)大文字で変数を使用すべきではない理由
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加