如何根据 AWK 中的一列连接两个文件

Amy*_*Amy 0 awk

我有两个文件,其中都有数百万条记录(每个文件的记录数量不同)

文件A

46901208,(SPUR OFF) FFERM LLIDIART WERDD,WRECSAM
85315934,A4077 FROM CRUGHYWEL ROAD,CRUGHYWEL
46402576,A4085 COFNOD WEDI CAU,BEDDGELERT
46400001,A4085 CYLCHFAN CAEATHRO,CAEATHRO
Run Code Online (Sandbox Code Playgroud)

文件B

46408008,1
46400005,1
46400001,4
46402576,3
Run Code Online (Sandbox Code Playgroud)

我想根据匹配的 $1 合并两个文件,不匹配的文件我不希望它们被输出。

期望的输出:

46402576,A4085 COFNOD WEDI CAU,BEDDGELERT,3
46400001,A4085 CYLCHFAN CAEATHRO,CAEATHRO,4
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?谢谢

Sla*_*hin 5

我知道您已经询问过awk,但有一个特殊的命令可以做到这一点,它被称为join

1) 如果您的文件已经排序:

$ join -j 1 -t, A B
46400001,A4085 CYLCHFAN CAEATHRO,CAEATHRO,4
46402576,A4085 COFNOD WEDI CAU,BEDDGELERT,3
Run Code Online (Sandbox Code Playgroud)

在这里我们正在加入文件A在这里,我们通过B,并使用逗号作为字段的分隔符。

2)如果您的文件未排序并且您想使用以下命令一次性完成所有操作bash

$ join -j 1 -t, <(sort A) <(sort B)
46400001,A4085 CYLCHFAN CAEATHRO,CAEATHRO,4
46402576,A4085 COFNOD WEDI CAU,BEDDGELERT,3
Run Code Online (Sandbox Code Playgroud)