2

有没有更简单的方法来执行以下操作?我正在阅读一个大型 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
4

3 回答 3

4

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

while IFS=, read -r -a myArray
do
    ( IFS=,; echo "${myArray[*]:44:5},${myArray[*]:65:3}" )
done
于 2013-06-18T16:40:57.283 回答
2
awk 'BEGIN{FS=OFS=","}{print $44, $45, $46, $47, $48, $65, $66, $67}' "$SHEET"

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

于 2013-06-18T16:48:28.937 回答
0

看起来这是为 awk 量身定做的工作。使用这个 awk 命令:

awk -F"," '{printf("%s,%s,%s,%s,%s,%s,%s,%s\n", 
            $44, $45, $46, $47, $48, $65, $66, $67)}' $SHEET
于 2013-06-18T16:41:45.633 回答