AWK比较两个文件并打印单独的列



我需要帮助使用awk脚本比较两个文件。将file1.csv的第二列与file2.csv的第一列进行比较,如果匹配,则按以下预期格式打印行。

file1.csv

abc,id123,newyork
bcd,id456,seattle

file2.csv

id678,bbb,ccc
id123,hhh,ddd

预期格式:

abc,id123,hhh,newyork,{hhh,ddd},ddd

到目前为止,我可以打印以下

abc,id123,newyork,hhh,ddd

使用以下awk,

$ awk -F, 'FNR==NR{f1[$2]=$0; next} $1 in f1 {print f1[$1] "," $2 "," $3}' file1.csv file2.csv

你很接近。尝试:

$ awk -F, 'FNR==NR{f1[$2]=$1; f3[$2]=$3; next} $1 in f1 {printf "%s,%s,%s,%s,{%s,%s},%sn",f1[$1],$1,$2,f3[$1],$2,$3,$3}' file1.csv file2.csv
abc,id123,hhh,newyork,{hhh,ddd},ddd

这里的关键添加是使用第二个数组f3来捕获输入,使用printf来获得完全格式化的输出。

最新更新