如何使用shell脚本更改csv文件中的单元格值

时间:2013-07-09 19:00:58

标签: linux bash shell unix

我想在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 个答案:

答案 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