我需要在 csv 文件的第三列中为我能够使用以下命令添加的所有行添加值 0.0。
awk -v FS=',' -v OFS=',' '{$2=$2",0.0"} 1' test.csv
但是,当我检查行中是否存在第三列时,仅使用以下命令添加值不起作用。
awk -F, '{ if (length($2) != 0) `awk -v FS=',' -v OFS=',' '{$2=$2",0.0"} 1'` ;}' test.csv
测试.csv
2016-10-25 11:18:42.945 UTC,"dummy",546
2016-10-25 11:18:42.950 UTC
set misc_data = 'La Carmela de Boracay Resort Hotel|Twin
Deluxe|Breakfast|AC|NA|Triple Sharing|-1_U_Miss_NINIA_HANNAH_FUGUIAO_-1_Non_false_#|'
1,2,5
3
输出:
2016-10-25 11:18:42.945 UTC,"dummy",0.0,546
1,2,0.0,5
答案1
您实际上并不需要显式if
测试 - 您可以将逻辑合并到 awk 中图案
awk -v FS=',' -v OFS=',' 'NF>1 && length($2) !=0 {$2=$2",0.0"; print}' test.csv
2016-10-25 11:18:42.945 UTC,"dummy",0.0,546
1,2,0.0,5
如果你想使用if
,语法是if (condition) {expression}
例如
awk -v FS=',' -v OFS=',' 'NF>1 {if (length($2) !=0) {$2=$2",0.0"; print}}' test.csv