我想使用awk连接2个文件,文件可能无法排序

我想使用awk连接2个文件,文件可能无法排序,awk,Awk,我有两个文件。 第一个文件: 1,10000,abc,hello,cust 2,123,bib,hi,cust1 3,34562,acb,bye,cust2 第二档 b231,3,231 w123,1,111 我想根据第一个文件的第1列和第2个文件的第2列,使用awk命令连接上述两个文件,输出格式如下。我需要第一个文件中的所有记录,第二个文件中的第一个字段是输出文件中的第四个字段。应丢弃第一个文件中的第一个字段。我试着加入,但我总是得到第四个字段为空。因此,考虑使用awk找到解决方案。请解释

我有两个文件。 第一个文件:

1,10000,abc,hello,cust
2,123,bib,hi,cust1
3,34562,acb,bye,cust2
第二档

b231,3,231
w123,1,111
我想根据第一个文件的第1列和第2个文件的第2列,使用awk命令连接上述两个文件,输出格式如下。我需要第一个文件中的所有记录,第二个文件中的第一个字段是输出文件中的第四个字段。应丢弃第一个文件中的第一个字段。我试着加入,但我总是得到第四个字段为空。因此,考虑使用awk找到解决方案。请解释一下解决方案。 注意:文件大小为GBs。 输出文件格式

10000,abc,hello,b231,cust
123,bbb,hi,,cust1
34562,acb,bye,w123,cust2

您可以使用
awk
这样做:

awk -F, 'BEGIN{OFS=","} FNR==NR {p[$2]=$1;next} {if(p[$1])print $2,$3,$4,p[$1],$5; else print $2,$3,$4,"",$5}' file2 file1
说明:

-F,            - sets the input field separator to a comma
BEGIN{OFS=","} - sets the output field separator to a comma at the start
FNR==NR{...}   - remembers second field of file2 in array p[] indexed by first field

脚本的其余部分检查file1中的每一行,看看是否在file2中看到了它的第一个字段。如果我们这样做了,它将打印字段2、3、4、数组p[]和字段5中的对应元素。如果我们没有看到文件2中的第一个字段,它只会用一个额外的逗号打印currenmt记录。

一个文件比另一个文件小很多吗?