You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用awk工具关联两个文件查询userId对应的zoneName

awk两文件关联查询面试题解

需求说明

  • 文件a.txt含两个字段:userId、zoneId
  • 文件b.txt含两个字段:zoneId、zoneName
  • 要求用awk工具输出a.txt中每个userId对应的zoneName,逻辑等价于SQL中的a.txt LEFT JOIN b.txt

示例数据

a.txt内容

u001 z001
u002 z002
u003 z003

b.txt内容

z001 A
z002 B
z003 C

预期输出

u001 A
u002 B
u003 C

实现命令

awk -F' ' 'NR==FNR{a[$2]=$1;}NR!=FNR && a[$1] {print a[$1], $2}' a.txt b.txt

命令逻辑拆解

  • NR==FNR:NR为全局行号,FNR为当前文件的行号,该条件成立时代表正在处理第一个输入文件a.txt
  • a[$2]=$1:处理a.txt时,以zoneId(第2字段)为键,userId(第1字段)为值存入关联数组a
  • NR!=FNR:该条件成立时代表正在处理第二个输入文件b.txt
  • a[$1]:校验b.txt当前行的zoneId(第1字段)是否在数组a中存在对应记录
  • print a[$1], $2:匹配成功时输出对应的userId和zoneName(b.txt的第2字段)

内容的提问来源于stack exchange,提问作者Austin Deng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 04:57:00