如何通过查找索引查找数据的值?

如何通过查找索引查找数据的值?

我有一个数据数组列表,我想通过其索引(id)查看值并将其存储到数据数组中的索引 id 中。我可以在电子表格 VALUE LOOKUP 函数中完成此操作,但我仍然有大量数据可以执行此操作,并且我认为电子表格函数对于庞大的数据集不会很快。我希望你帮助我让我知道可以更快完成的脚本。我的数据数组、索引 id 和建议的输出如下。

数据数组

Id  Value 

1    10
2    20
3    30
4    40
6    60
8    80
10   100

指数

Id 

1
2
3
4
5
6
7
8
9
10
11
12
13

输出将是

ID    Value
1  10
2  20
3  30
4  40
5  NULL
6  60
7  NULL
8  80
9  NULL 
10 100
11  NULL
12  NULL
13  NULL

谢谢你再次帮忙。

答案1

尝试 awk 和 redis 的完美组合(一种非常快速的开源 NoSQL 键值存储。请参阅http://redis.io了解详情)。

使用 awk 解析您的 2 个文件(“data_array.txt”和“index.txt”)并生成您的 redis 命令。

将 2 个 awk 脚本的结果通过管道传输到 bash 中来执行它们。就是这样 :-)

一步步:

通过解析从第三行开始的数据文件来生成 redis“SET”语句,如下所示:

awk '{if (FNR > 2) \
print "redis-cli SET VALUE:" $1 " \"" $2"\""}' data_array.txt
redis-cli SET VALUE:1 "10"
redis-cli SET VALUE:2 "20"
redis-cli SET VALUE:3 "30"
redis-cli SET VALUE:4 "40"
redis-cli SET VALUE:6 "60"
redis-cli SET VALUE:8 "80"
redis-cli SET VALUE:10 "100"

将您的 redis“SET”语句通过管道传输到 bash 中来执行它们:

awk '{if (FNR > 2) \
print "redis-cli SET VALUE:" $1 " \"" $2"\""}' data_array.txt | bash
OK
OK
OK
OK
OK
OK
OK

通过解析从第三行开始的索引文件来生成 redis“GET”语句,如下所示:

awk '{if (FNR > 2) print "printf \"" $1 " \" && redis-cli GET VALUE:" $1}' index.txt
echo 1 && redis-cli GET VALUE:1
echo 2 && redis-cli GET VALUE:2
echo 3 && redis-cli GET VALUE:3
echo 4 && redis-cli GET VALUE:4
echo 5 && redis-cli GET VALUE:5
echo 6 && redis-cli GET VALUE:6
echo 7 && redis-cli GET VALUE:7
echo 8 && redis-cli GET VALUE:8
echo 9 && redis-cli GET VALUE:9
echo 10 && redis-cli GET VALUE:10
echo 11 && redis-cli GET VALUE:11
echo 12 && redis-cli GET VALUE:12
echo 13 && redis-cli GET VALUE:13

将您的 redis“GET”语句通过管道传输到 bash 中来执行它们:

awk '{if (FNR > 2) \
print "printf \"" $1 " \" && redis-cli GET VALUE:" $1}' index.txt |\
bash
1 "10"
2 "20"
3 "30"
4 "40"
5 (nil)
6 "60"
7 (nil)
8 "80"
9 (nil)
10 "100"
11 (nil)
12 (nil)
13 (nil)

享受 :-)

伯尼

@拉胡尔·帕蒂尔
@Gilles

我故意在这里发布我的答案。亚伯拉罕的示例数据非常透明,因此希望我的答案能够很快理解。中的数据unix中的vlookup函数例子让我看起来很困惑......

相关内容