首页 > 解决方案 > 与列表项关联的查找值

问题描述

我正在尝试从 excel 中近似 vlookup。

我有两个文件。

文件 #1 - list.txt:

green
purple
orange

文件 #2 - reads.txt:

blue 2
green 3
red 5
purple 6

我正在尝试读取 list.txt 的条目,然后转到 reads.txt 并提取相关值。

所需的输出是:

green 3
purple 6
orange 0

如果我写:

awk -F ' ' 'FNR == NR {keys[$1]; next} {if ($1 in keys) print $1,$2}' list.txt reads.txt

我得到:

green 3
purple 6

但橙色没有,我需要这条线:

orange 0

如果我写

awk -F ' ' 'FNR == NR {keys[$1]; next} {if ($1 in keys) print $1,$2; else print $1,0}' list.txt reads.txt

我得到:

blue 0
green 3
red 0
purple 6

任何想法如何解决这一问题?

这里的主要新手,所以任何帮助表示赞赏!

标签: awk

解决方案


$ awk 'NR==FNR{map[$1]=$2; next} {print $1, map[$1]+0}' reads.txt list.txt
green 3
purple 6
orange 0

推荐阅读