我需要帮助使用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
来获得完全格式化的输出。