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

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

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 的第 2 列如果存在 EXCAT 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,, ,

答案2

awk 似乎是一个错误的工具。这听起来也像是一个家庭作业问题。我会用:

tr ' ' ',' <File2 >File3
join -t ',' -1 2 -2 2 File1 File3

相关内容