的CSV文件列计算
问题描述:
在CSV文件我有栏下面我试着用
的CSV文件列计算
$ awk -v FS="\",\"" -v OFS="\",\"" '{$2=sprintf("%.2f",$2*2)}1' file.csv
改变第二列的值,但某些列包含字符串,它必须保持不变。我知道
"^[0-9][0-9]*$"
将检查它是否数字,但如何把它在我的命令结合?
FILE.CSV
"sku","NO price","supplierName"
"sku","3.14","supplierName"
"sku","3.56","supplierName"
"sku","4.20","supplierName"
答
您可以使用:
awk -v FS='","' -v OFS='","' '$2+0 == $2{$2=sprintf("%.2f",$2*2)}1' file.csv
"sku","NO price","supplierName"
"sku","6.28","supplierName"
"sku","7.12","supplierName"
"sku","8.40","supplierName"
$2+0 == $2
检查可以确保在$2
值是数字。
[检查此答案](http://unix.stackexchange.com/questions/131073/awk-printf-number-in-width-and-round-it-up) – anubhava
请发一个新的问题rounding of这个问题的浮点数是识别数字。 – anubhava
谢谢,它工作 – user5507230