我有一个数组和一个csv文件。我正在尝试从csv文件中获取与数组中的数据匹配的数据。
这是我的数组:
array[12345678876543]=ID00000111
array[87654321234567]=ID00000222
这是csv文件中的数据:
12345678876543,floor1
87654321234567,floor2
我正在尝试获取此输出:
ID00000111 floor1
ID00000222 floor2
我尝试过这种语法,但是我只能获得楼层号。
for key in ${!array[@]}; do
awk -F, -v serial="${key}" '$1 == serial { print $2; exit}' test.csv
done
我希望有人可以帮助我解决我的问题。
答案 0 :(得分:2)
我假设您的csv文件中的第一个条目是数组的key
。
#!/bin/bash
array[12345678876543]=ID00000111
array[87654321234567]=ID00000222
while read -r line; do
key=$(echo $line | cut -d, -f1)
val=$(echo $line | cut -d, -f2-)
echo ${array[$key]} $val
done < test.csv
您还可以执行类似这样的操作,使其与您现在拥有的功能更接近:
for key in ${!array[@]}; do
echo ${array[$key]} $(grep "$key" test.csv | cut -d, -f2-)
done