如何从 csv 文件中查找数据
How to lookup data from a csv file
我有一个数组和一个 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}" ' == serial { print ; exit}' test.csv
done
我希望有人能帮助我解决我的问题。
我假设您的 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
我有一个数组和一个 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}" ' == serial { print ; exit}' test.csv
done
我希望有人能帮助我解决我的问题。
我假设您的 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