【发布时间】:2021-11-07 17:02:13
【问题描述】:
面试的时候,面试官问了我一个关于awk的问题,我也无能为力。
问题如下:
文件名a.txt 包含userId 和zoneId,文件名b.txt 包含zoneId 和zoneName。
要求:使用awk工具打印出a.txt的userId所属的zoneName。
例如:
a.txt 像这样:
u001 z001
u002 z002
u003 z003
b.txt 像这样:
z001 A
z002 B
z003 C
打印结果如下:
u001 A
u002 B
u003 C
非常感谢您的回答!
这个问题的意思是让我们用两个文件作为内部链接。
SQL 中这样:a.txt inner left join b.txt
我查了资料,觉得以下是比较理想的答案:
awk -F' ' 'NR==FNR{a[$2]=$1;}NR!=FNR && a[$1] {print a[$1], $2}' a.txt b.txt
感谢阅读。
【问题讨论】:
-
你可以把它缩短一点:
awk 'NR==FNR{a[$1]=$2;next}{$2=a[$2]}1' b.txt a.txt。
标签: awk