比较两个文件之间的不同列值,如果匹配则打印不同的列值

比较两个文件之间的不同列值,如果匹配则打印不同的列值

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的column6中的file2复制column2,并从file1的column7中的file2复制column3

我想要输出为:

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 中将两个列值“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].

相关内容