比较4列的两个文件(通过不同的分隔符)并返回所需的输出

时间:2019-10-16 20:39:00

标签: awk

我有两个文件。文件1有16列,带分隔符“,”,文件2有约40列,分隔符为“ tab”。 我想比较两个文件。如果文件1的1,2,3,4列与1,2,4,5 0f file2列相同,则输出文件包含file2的所有信息和文件1的对应column16。

文件1: enter image description here

file2: enter image description here

 awk 'BEGIN {OFS="/t"} NR==FNR{FS=",";a[$1,$2,$3,$4];b[$1,$2,$3,$4]=$16}{FS="/t";if (($1,$2,$4,$5) in a) print $0,b[$1,$2,$4,$5]}' <(sort -k2 file1) <(sort -k2 file2) >output

1 个答案:

答案 0 :(得分:0)

这应该有效。

$ awk 'NR==FNR {a[$1,$2,$3,$4]=$16; next} 
      ($1,$2,$4,$5) in a {print $0,a[$1,$2,$4,$5]}' FS=, file1 FS='\t' file2

无需对文件进行预排序。