我有一个数据数组列表,我想通过其索引(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函数例子让我看起来很困惑......