1

我想在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  
4

4 回答 4

4

如果要更改值,请更改它。纠正错误:

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
于 2013-07-09T19:27:34.950 回答
1

要在 csv 中更改f3A3,请使用以下 sed 命令:

sed -i.bak -r 's/^(([^,]+,){2})[^,]+(.+)$/\1A3\3/' aa.csv
于 2013-07-09T19:07:23.633 回答
1

awk

awk 'BEGIN{FS=OFS=","}{$3="Whatever"}1' input.csv > output.csv
于 2013-07-09T19:08:35.300 回答
0

这可能对您有用(GNU sed):

sed -ri 's/[^,]+/REPLACEMENT/3' file.csv

这会将非逗号的第三次出现更改为REPLACEMENT.

于 2013-07-10T05:48:52.420 回答