有没有更简单的方法来执行以下操作?我正在阅读一个大型 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
您可以将子字符串运算符与数组参数扩展一起使用:
while IFS=, read -r -a myArray
do
( IFS=,; echo "${myArray[*]:44:5},${myArray[*]:65:3}" )
done
awk 'BEGIN{FS=OFS=","}{print $44, $45, $46, $47, $48, $65, $66, $67}' "$SHEET"
我们将输入字段分隔符 (FS)和输出字段分隔符 (OFS)设置为,,
以便输出为csv
格式。
看起来这是为 awk 量身定做的工作。使用这个 awk 命令:
awk -F"," '{printf("%s,%s,%s,%s,%s,%s,%s,%s\n",
$44, $45, $46, $47, $48, $65, $66, $67)}' $SHEET