2013-07-09 123 views
1

我想改變,而循環echo語句之前F3單元格的值如何使用shell腳本

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

什麼是'ifs'?你的意思是寫'IFS'嗎? –

+0

奇怪,你問這個。難道你不能把所需的價值而不是回聲f3? – devnull

+0

不僅ifs,賦值運算符周圍的空間也會導致問題。 – devnull

回答

2

如果您想更改該值,請將其更改。修正錯誤:

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 
+0

在你原來的csv中,每列值可能是雙引號格式。在這種情況下,您可以使用雙引號「」來更新f3。 f3 =「\」別的東西\「」 –

1

要在您的CSV使用這種改變f3A3改變csv文件單元格的值sed命令:

sed -i.bak -r 's/^(([^,]+,){2})[^,]+(.+)$/\1A3\3/' aa.csv 
1

隨着awk

awk 'BEGIN{FS=OFS=","}{$3="Whatever"}1' input.csv > output.csv 
0

這可能爲你工作(GNU SED):

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

這改變的非逗號REPLACEMENT第三occurence。