2015-11-04 2 views
1

В 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" 

ответ

1

Вы можете использовать:

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 числовой.

+0

[Отметьте этот ответ] (http://unix.stackexchange.com/questions/131073/awk-printf-number-in-width-and-round-it-up) – anubhava

+0

Пожалуйста, разместите новый вопрос для округления число с плавающей запятой, поскольку этот вопрос заключался в определении численных значений. – anubhava

+0

Спасибо, это сработало – user5507230

Смежные вопросы