以下のコードを使用してキーに基づいてマージした2つのファイルがあります
file1
-------------------------------
1 a t p bbb
2 b c f aaa
3 d y u bbb
2 b c f aaa
2 u g t ccc
2 b j h ccc
file2
--------------------------------
1 11 bbb
2 22 ccc
3 33 aaa
4 44 aaa
以下のコードを使用して、これら2つのファイルベースのキーをマージしました
awk 'NR==FNR{a[$3]=$0;next;}{for(x in a){if(x==$5) print $1,$2,$3,$4,a[x]};
私の質問は、file2の$ 2を変数または配列に保存し、a[x]の後に再度出力する方法です。
私の望む結果は:
1 a t p 1 11 bbb 11
2 b c f 3 33 aaa 33
2 b c f 4 44 aaa 44
3 d y u 1 11 bbb 11
2 b c f 3 33 aaa 33
2 b c f 4 44 aaa 44
2 u g t 2 22 ccc 22
2 b j h 2 22 ccc 22
ご覧のとおり、最初の7列はマージコードの結果です。結果に最後の列(a [x]のフィールド2)を追加する必要があります。
重要:
次の質問は、.awkファイルがある場合、(| column -t
)のようなbashスクリプトコードを使用したり、結果をファイル(awk... > result.txt
)に送信したりするにはどうすればよいですか?私は常にコマンドプロンプトでこれらのコードを使用します。.awkファイルのコード内でそれらを使用できますか?