将逗号分隔的字符串拆分为shell脚本中的数组值?

时间:2014-06-25 14:19:13

标签: arrays string shell unix awk

我的数据集(data.txt)看起来像这样[imageID,sessionID,height1,height2,x,y,crop]:

1,0c66824bfbba50ee715658c4e1aeacf6fda7e7ff,1296,4234,194,1536,0
2,0c66824bfbba50ee715658c4e1aeacf6fda7e7ff,1296,4234,194,1536,0
3,0c66824bfbba50ee715658c4e1aeacf6fda7e7ff,1296,4234,194,1536,0
4,0c66824bfbba50ee715658c4e1aeacf6fda7e7ff,1296,4234,194,1536,950

这些是我想要使用的一组值。我是shell脚本的新手:)我像这样逐行读取文件,

cat $FILENAME | while read LINE
do
string=($LINE)
# PROCESSING THE STRING
done

现在,在上面的代码中,获取字符串后,我希望执行以下操作: 1.将字符串拆分为逗号分隔值。 2.将这些变量存储到像imageID [],sessionID []。

这样的数组中

我需要使用imagemagick访问这些值以进行图像处理。  但是,我无法正确执行上述步骤

2 个答案:

答案 0 :(得分:6)

set -A对我不起作用(可能是因为OSX上的旧版BASH)

使用read -a发布备用解决方案以防有人需要:

# init all your individual arrays here
imageId=(); sessionId=();

while IFS=, read -ra arr; do
    imageId+=(${arr[0]})
    sessionId+=(${arr[1]})
done < input.csv

# Print your arrays
echo "${imageId[@]}"
echo "${sessionId[@]}"

答案 1 :(得分:1)

oIFS="$IFS"; IFS=',' 
set -A str $string
IFS="$oIFS"

echo "${str[0]}";
echo "${str[1]}";
echo "${str[2]}";

你可以像这样拆分和存储

在Unix阵列上查看更多here