我想在while循环
中的echo语句之前更改f3单元格的值Exec &> output.csv
file = "d:/aa.csv"
while ifs =','
read f1 f2 f3 f4 f5 f6 f7 f8
do
echo "$f1,$f2,$f3,$f4,$f5,$f6,$f7,$f8"
done < $file
答案 0 :(得分:3)
如果要更改值,请更改它。纠正错误:
while IFS=, read -r f1 f2 f3 f4 f5 f6 f7 f8
do
f3="something else"
echo "$f1,$f2,$f3,$f4,$f5,$f6,$f7,$f8"
done < "$file" > output.csv
或
IFS=,
while read -ra fields; do
fields[2]="something else"
echo "${fields[*]}"
done < "$file" > output.csv
答案 1 :(得分:1)
要在csv中将f3
更改为A3
,请使用此sed命令:
sed -i.bak -r 's/^(([^,]+,){2})[^,]+(.+)$/\1A3\3/' aa.csv
答案 2 :(得分:1)
使用awk
:
awk 'BEGIN{FS=OFS=","}{$3="Whatever"}1' input.csv > output.csv
答案 3 :(得分:0)
这可能适合你(GNU sed):
sed -ri 's/[^,]+/REPLACEMENT/3' file.csv
这会将第三次非逗号更改为REPLACEMENT
。