bash shell数组输出范围为csv

时间:2013-06-18 16:37:51

标签: arrays bash csv

有更简单的方法来执行以下操作吗?我正在读取一个大的cvs文件,并且只想在每行的索引上显示范围并输出回csv格式。

while  IFS=$',' read -r -a myArray
do
    echo ${myArray[44]},${myArray[45]},${myArray[46]},${myArray[47]},${myArray[48]},${myArray[65]},${myArray[66]},${myArray[67]}
done < $SHEET

3 个答案:

答案 0 :(得分:4)

您可以将子字符串运算符与数组参数展开一起使用:

while IFS=, read -r -a myArray
do
    ( IFS=,; echo "${myArray[*]:44:5},${myArray[*]:65:3}" )
done

答案 1 :(得分:2)

awk 'BEGIN{FS=OFS=","}{print $44, $45, $46, $47, $48, $65, $66, $67}' "$SHEET"

我们将输入字段分隔符(FS)输出字段分隔符(OFS)设置为,,以便输出位于csv格式。

答案 2 :(得分:0)

看起来这是awk的量身定制的工作。使用此awk命令:

awk -F"," '{printf("%s,%s,%s,%s,%s,%s,%s,%s\n", 
            $44, $45, $46, $47, $48, $65, $66, $67)}' $SHEET