gpt4 book ai didi

linux - 条件 Awk HashMap 匹配查找

转载 作者:可可西里 更新时间:2023-11-01 11:44:09 25 4
gpt4 key购买 nike

我有 2 个表格文件。一个文件包含 50 个键值的映射,仅称为 lookup_file.txt。另一个文件包含 30 列和数百万行的实际表格数据。 数据.txt我想用 lookup_file.txt. 中的值替换第二个文件的 id 列。

我该怎么做?我更喜欢在 bash 脚本中使用 awk ..另外,我可以在 bash 中使用 HashMap 数据结构来存储 50 个键/值而不是另一个文件吗?

最佳答案

假设您的文件有逗号分隔的字段并且“id 列”是字段 3:

awk '
BEGIN{ FS=OFS="," }
NR==FNR { map[$1] = $2; next }
{ $3 = map[$3]; print }
' lookup_file.txt data.txt

如果这些假设中的任何一个是错误的,如果修复不是很明显,请告诉我们...

编辑:如果您想避免(恕我直言,可忽略不计)NR==FNR 测试性能影响,这将是适合使用 getline 的罕见情况之一:

awk '
BEGIN{
FS=OFS=","
while ( (getline line < "lookup_file.txt") > 0 ) {
split(line,f)
map[f[1]] = f[2]
}
}
{ $3 = map[$3]; print }
' data.txt

关于linux - 条件 Awk HashMap 匹配查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13569913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com