将CSV转换为Bash中的数组

时间:2019-05-06 13:04:06

标签: arrays bash csv

我有一个CSV,每行2个IP。我想合并两个用***隔开的IP,并填充到一个数组中。我尝试了下面的代码,但只得到最后一行。

#!/bin/bash

INPUT="IPPairs.csv"
array=()

while IFS="," read var1 var2 ; do
        echo $var1 $var2
        pairString="$var1***$var2"
        array+=($pairString)
done < $INPUT

echo "${array[@]}"

1 个答案:

答案 0 :(得分:0)

除非输入文件包含,以外的其他内容作为分隔符,否则您的代码应该可以使用。不过,您可以使其更短(需要Bash 4.0或更高版本):

mapfile -t array < IPPairs.csv
array=("${array[@]/,/***}")

第一个命令将文件读入数组,第二个命令在每个数组元素中将,替换为***