假设我有 2 个文件,如下所示。基本上,我想合并这两个文件,但我想根据 filter.txt 的第二列打印 map.txt 中的行数(请参阅 output.txt 中的预期结果)
cat > filter.txt
a 3
b 2
c 6
cat > map.txt
a a001
a a002
a a003
a a004
a a005
a a006
a a007
a a008
a a009
a a010
a a011
a a012
b b01
b b02
b b03
b b04
c c01
c c02
c c03
c c04
c c05
c c06
c c07
我知道有很多方法可以做到这一点,比如 while 循环,但我认为如果我处理数千条记录,awk 命令会更有效地获得这个结果:
output.txt:
a a001
a a002
a a003
b b01
b b02
c c01
c c02
c c03
c c04
c c05
c c06
我试图从这个命令中弄清楚:
awk 'NR==FNR{a[$1]=$2; next} {if(a[b=$1]) {print $0}}' filter.txt map.txt
但是,它只是打印所有匹配的行,我真的被困在如何控制要打印的行数上:)
我感谢您的帮助!