awkを使用してあるファイルの列を別のファイルの列に置き換えますか?

awkを使用してあるファイルの列を別のファイルの列に置き換えますか?

2つのファイルがあります。

ファイル1.txt:

111|aaa|444
222|bbb|555 
333|ccc|666

ファイル2.txt:

111
(null)
333 

file1 の 2 番目の列を file2 の 1 番目の列に置き換えます。

期待される出力

新しい:

111|111|444
222||555
333|333|666

次のコマンドを使用しています。
awk 'BEGIN {FS=OFS="|"}NR == FNR {a[FNR] = $B;next}$A = a[FNR]' B=1 A=2 file2.txt file1.txt > new.txt

私が得た結果は

新しい:

111|111|444
333|333|666

2回目の記録を失いました。記録損失を防ぐ方法は?

ベストアンサー1

awk 'BEGIN {FS=OFS="|"}NR == FNR {a[FNR] = $B;next}{$A = a[FNR];print $0}' B=1 A=2 f2 f1

おすすめ記事