awk - 与列表项关联的查找值
问题描述
我正在尝试从 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 'NR==FNR{map[$1]=$2; next} {print $1, map[$1]+0}' reads.txt list.txt
green 3
purple 6
orange 0
推荐阅读
- python - HMMlearn:如何使用 predict_proba 函数?
- python - 是否可以用 numpy 向量化替换 pandas 中的这个嵌套循环以加快代码处理速度?
- python - 如何根据几个条件将列表分组到列表列表中?
- java - DateUtils.formatDateRange 不尊重 Formatter 的语言环境
- python - 在 matplotlib 图的顶部自动定位图像
- javascript - 在刷新或手动 URL 更改时滚动到锚点
- android - 设计面板与 Android 模拟器中视图的不同定位
- python - Django REST 框架 - “方法 \"GET\" 不允许。” -
- pandas - 在 Pandas 中转换日期时间索引
- r - R中有向网络中的颜色节点