File1 には次のデータがあり、これはフィールド区切り文字です。
1,T_EXIT,9053.0,10325.0,, ,
2,V_TURN,120.0,11334.0,,GOAL,RECK
3,Q_ENTRY,122.0,190.0,, ,
4,Q_ENTRY_RUN,130.0,569.0,, ,
ファイル2にデータがある
SYNC CLK
T_EXIT OPEN
Q_ENTRY CLOSE ALLOW
CORE_T MODE
file2のColumn1をFile1のColumn2と比較し、EXCAT MATCHが存在する場合は、file2の6列にあるfile2から2列をコピーし、1の7列にあるfile2から3列をコピーしたいと思います。
私は出力が次のようになります:
1,T_EXIT,9053.0,10325.0,,OPEN,
2,V_TURN,120.0,11334.0,,GOAL,RECK
3,Q_ENTRY,122.0,190.0,,CLOSE,ALLOW
4,Q_ENTRY_RUN,130.0,569.0,, ,
以下のコードを試しましたが、file2で2つの列値「column1」と「column2」を一緒に保存する方法はわかりません。
awk 'NR==FNR{A[$1]=$2;B[$1]=$3;next} ($1 in A) {$6=A[$1]; $7=B[$1]}1' file2 FS=, OFS=, file1 > test
答え1
$ awk 'NR==FNR{ data[$1]=$2 OFS $3; next }
($2 in data){ sub(/[^,]*,[^,]*$/, ""); $0=$0 data[$2] }1' OFS=, file2 FS=, file1
1,T_EXIT,9053.0,10325.0,,OPEN,
2,V_TURN,120.0,11334.0,,GOAL,RECK
3,Q_ENTRY,122.0,190.0,,CLOSE,ALLOW
4,Q_ENTRY_RUN,130.0,569.0,, ,
使用するとsub(/[^,]*,[^,]*$/, "")
、私たちが見るときデータ以前に接続された配列を削除し、file2の対応するキー値を$0= $0 data[$2]
。