使用 awk 将 2 个文件连接到 2 列,但列号不同

使用 awk 将 2 个文件连接到 2 列,但列号不同

我有 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

相关内容