我想在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
如果要更改值,请更改它。纠正错误:
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
要在 csv 中更改f3
为A3
,请使用以下 sed 命令:
sed -i.bak -r 's/^(([^,]+,){2})[^,]+(.+)$/\1A3\3/' aa.csv
与awk
:
awk 'BEGIN{FS=OFS=","}{$3="Whatever"}1' input.csv > output.csv
这可能对您有用(GNU sed):
sed -ri 's/[^,]+/REPLACEMENT/3' file.csv
这会将非逗号的第三次出现更改为REPLACEMENT
.