如何基于AWK中的一列联接两个文件 [英] How to join two files based on one column in AWK

查看:101
本文介绍了如何基于AWK中的一列联接两个文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have two files both with millions of records in (not the same amount of records in each)

文件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

文件B

46408008,1
46400005,1
46400001,4
46402576,3

我想基于匹配的$ 1合并两个文件,不匹配的文件我不希望它们被输出.

I want to merge the two files based on matching $1, the ones that don't match I don't want them being output.

所需的输出:

46402576,A4085 COFNOD WEDI CAU,BEDDGELERT,3
46400001,A4085 CYLCHFAN CAEATHRO,CAEATHRO,4

我该怎么做? 谢谢

推荐答案

尝试一下

awk -F"," 'BEGIN{OFS=","} {if (NR==FNR) {a[$1]=$2; next} if ($1 in a) {print $1, $2, $3, a[$1]}}' f2 f1


更新

使用awk -F"," -f your_awk.awk f2 f1格式.在your_awk.awk文件中:

BEGIN{OFS=","} {if (NR==FNR) {a[$1]=$2; next} if ($1 in a) {print $1, $2, $3, a[$1]}}

这篇关于如何基于AWK中的一列联接两个文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆