我有两个 .csv
items-to-change.txt 是唯一 ID 的单列列表:
218294
222084
197931
198161
197432
201021
214009
items-by-location.txt 具有唯一的 ID 和位置编号(制表符分隔)
ID Location
197432 1
201021 2
214009 4
214438 5
214492 1
...
对于与 items-to-change.txt 中的 ID 匹配的任何 ID,我需要将 items-by-location.txt 中的位置字段更改为 6,然后据此创建一个新的 .csv,例如 items-by-location2 。TXT
items-by-location2.txt 应该是:
197432 6
201021 6
214009 6
214438 5
214492 1
...
awk 是一个很好的解决方案吗?我知道 awk 有一个搜索参数,但不清楚如何使用 awk 读取 items-to-change.txt 获取 ID,然后逐行读取 items-by-location.txt,比较 ids 和如果第一列中有匹配的 ID,则只有 items-by-location.txt 的第二列。
有人可以举个例子吗?
答案1
将更改列表添加到数组中,然后在处理主输入文件时检查该数组非常适合awk
:
$ awk 'FILENAME=="changeset" { replace[$1] = 1 } FILENAME=="input" {if( $1 in replace ) { $2 = 6 }; print $1,$2}' changeset input
ID Location
197432 6
201021 6
214009 6
214438 5
214492 1