如何从csv文件中查找数据

时间:2018-11-10 02:22:21

标签: arrays bash lookup

我有一个数组和一个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

我希望有人可以帮助我解决我的问题。

1 个答案:

答案 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