我有以下文件,名为 file1:
j_1,2019-04-01,20.00,,,,22
j_1,2019-04-01,100.00,,,,33
j_2,2019-04-01,100.00,,,,11
j_3,2019-04-01,-264.56,,,,33
j_4,2019-04-04,130.00,,,,22
j_5,2019-04-04,130.00,,,,44
j_6,2019-04-04,-12.90,,,,55
j_7,2019-04-05,-9.78,,,,11
j_8,2019-04-05,-250.00,,,,22
j_9,2019-04-08,100.00,,,,66
和文件2
11,Accounting,VE
22,Paint,VE
33,Legal,VE
44,Office,VE
55,Maintenance,VE
66,IT,VE
我想加入 file1(第 7 列)和 file2(第 1 列)来创建 file3。
j_2,2019-04-01,100.00,,,,Accounting,VE
j_7,2019-04-05,-9.78,,,,Accounting,VE
j_1,2019-04-01,20.00,,,,Paint,VE
j_4,2019-04-04,130.00,,,,Paint,VE
j_8,2019-04-05,-250.00,,,,Paint,VE
j_1,2019-04-01,100.00,,,,Legal,VE
j_3,2019-04-01,-264.56,,,,Legal,VE
j_5,2019-04-04,130.00,,,,Office,VE
j_6,2019-04-04,-12.90,,,,Maintenance,VE
j_9,2019-04-08,100.00,,,,IT,VE
我已经尝试过了
join -t ',' -1 7 -2 1 file1 file2 | head -n 2
导致
11,j_2,2019-04-01,100.00,,,,Accounting,VE
11,j_7,2019-04-05,-9.78,,,,Accounting,VE
为什么前面会出现一个 11, 以及如何运行 join 命令才能得到所需的结果。 此外,我还希望能够在 awk 中做到这一点。我在互联网上寻找解决方案并发现了这一点,但没有完全理解它以将其应用到我的上下文中。另外,我是否能够将 file2 和 file1 作为变量传递,因为我真的想将其用作 bash 脚本的一部分。
awk 'BEGIN {FS=OFS=","} NR==FNR {h[$1] = $2; next} {print $0,h[$1]}' file2 file1
非常感谢您的帮助!
我们开始了(可移植到任何
awk
版本),非常接近您的代码:
awk '
BEGIN{FS=OFS=","}
NR==FNR{cp=$7;$7="";a[cp]=$0;next}
{print a[$1], $2, $3}
' file1 file2
j_7,2019-04-05,-9.78,,,,,Accounting,VE
j_8,2019-04-05,-250.00,,,,,Paint,VE
j_3,2019-04-01,-264.56,,,,,Legal,VE
j_5,2019-04-04,130.00,,,,,Office,VE
j_6,2019-04-04,-12.90,,,,,Maintenance,VE
j_9,2019-04-08,100.00,,,,,IT,V