2015-11-04 64 views
2

在csv文件中,我有下面的列,我尝试用
awk -F ',' -v OFS=',' '$1 { $2=$2*2; print}' path/file.csv > output.csv更改第二列的值。
但它返回零并删除双引号。更改CSV文件中的列值

FILE.CSV

"sku","0.47","supplierName" 
"sku","3.14","supplierName" 
"sku","3.56","supplierName" 
"sku","4.20","supplierName" 

output.csv

"sku",0,"supplierName" 
"sku",0,"supplierName" 
"sku",0,"supplierName" 
"sku",0,"supplierName" 

回答

4

可以指定在FS值超过一个字符。

$ awk -v FS="\",\"" -v OFS="\",\"" '{$2=$2*2}1' file 
"sku","0.94","supplierName" 
"sku","6.28","supplierName" 
"sku","7.12","supplierName" 
"sku","8.4","supplierName" 

如果您想四舍五入至小数点后两位,请尝试此操作。

$ awk -v FS="\",\"" -v OFS="\",\"" '{$2=sprintf("%.2f",$2*2)}1' file 
"sku","0.94","supplierName" 
"sku","6.28","supplierName" 
"sku","7.12","supplierName" 
"sku","8.40","supplierName" 
+0

非常感谢。你可能知道结果如何四舍五入? – user5507230

+0

看到我的更新... –

+0

你真了不起...我没有足够的分数来投票:( – user5507230