我有 2 个文件,必须使用 awk 将第一个文件的 $1、$2 和第二个文件的 $1、$8 连接起来。
文件1:
111,123abc,eee,ttt,yyy
222,234bcd,ttt,yyy,333
文件2:
111、hhhh、eeee、rere、、23、2014、123abc
222,jjkj,7878,uhjj,1,45,2013,234bcd
333,aaa,hhh,jjjj,2,78,590,567acd
输出:
111,123abc,hhhh,eeee,rere,,23,2014
222,234bcd,jjkj,7878,uhjj,1,45,2013
答案1
尝试:
$ awk -F, -v OFS=, 'NR==FNR{a[$1,$2]=1; next} ($1,$8) in a {print $1,$8,$2,$3,$4,$5,$6,$7}' file1 file2
这使:
111,123abc,hhh,eeee,rere,,23,2014,123abc
222,234bcd,jjkj,7878,uhjj,1,45,2013,234bcd
这与您的输出并不完全相同,因为第一列有 8 列,第二列有 9 列。我认为这是一个错字:-)
答案2
如果文件按连接字段(字段 #1)排序,如示例所示,那么您可以使用以下join
命令
join -t, -o 1.1,1.2,2.3,2.4,2.5,2.6,2.7,2.8 file1 file2