2つのファイル間の列値を比較し、一致する場合は別の列値を印刷します。

2つのファイル間の列値を比較し、一致する場合は別の列値を印刷します。

,File1には、フィールド区切り記号である次のデータがあります。

1,T_EXIT,9053.0,10325.0,, ,  
2,V_TURN,120.0,11334.0,, , 
3,Q_ENTRY,122.0,190.0,, , 
4,Q_ENTRY_RUN,130.0,569.0,, ,

ファイル2にデータがある

VDS SYNC
Dig T_EXIT OPEN
Ana Q_ENTRY CLOSE
Dig CORE_T 

比較したいファイル2の列2そしてファイル1の列2EXCAT MATCHが存在する場合は、file2のfile1の列6と列7の列3をコピーしたいと思います。

私は出力が次のようになります:

1,T_EXIT,9053.0,10325.0,,OPEN,OPEN 
2,V_TURN,120.0,11334.0,, , 
3,Q_ENTRY,122.0,190.0,,CLOSE,CLOSE
4,Q_ENTRY_RUN,130.0,569.0,, ,

以下のコードを試しましたが、目的の出力を取得できませんでした。どのような修正が必要ですか?

awk 'NR==FNR{A[$2]=$3;next}$2 in A{$6=A[$2]}1' file2 file1 > test

ベストアンサー1

実際に欠落しているのは、ファイル間の入力フィールドと出力フィールドの区切り文字が変更されたことです。

$ awk 'NR==FNR{A[$2]=$3;next} $2 in A{$7=$6=A[$2]}1' file2 FS=, OFS=, file1
1,T_EXIT,9053.0,10325.0,,OPEN,OPEN
2,V_TURN,120.0,11334.0,, , 
3,Q_ENTRY,122.0,190.0,,CLOSE,CLOSE
4,Q_ENTRY_RUN,130.0,569.0,, ,

おすすめ記事