将双引号添加到最后一个值

时间:2014-03-31 06:52:34

标签: unix

我有以下格式的数据。

abc ssg,"-149,684.58","-149,469.05",-215.53
efg sfg,-80.99,-77.46,-3.53
hij sf,"4,341.23","4,131.90",209.33
kilm mm,"2,490,716.13","-180,572.48","9,223.06"

我想在末尾添加双引号,而不是通过perl或unix完成双引号

输出应如下所示:

abc ssg,"-149,684.58","-149,469.05","-215.53"
efg sfg,-80.99,-77.46,"-3.53"
hij sf,"4,341.23","4,131.90","209.33"
kilm mm,"2,490,716.13","-180,572.48","9,223.06"

1 个答案:

答案 0 :(得分:0)

这可能对您有用:

gawk -F ',' -v Q='"' 'BEGIN {OFS=FS} $NF !~ Q {gsub(/.*/,Q $NF Q,$NF); print ; next} 1' INPUTFILE
  1. -F ','设置输入字段分隔符
  2. -v Q='"'Q变量设置为",这有助于避免一些逃避问题
  3. BEGIN {OFS=FS}将输出字段分隔符设置为与输入
  4. 相同
  5. $NF !~ Q如果最后一个字段与Q==")不匹配,那么
  6. gsub(/.*/,Q $NF Q,$NF)将最后一个字段替换为"分隔
  7. print
  8. 跳过next规则并处理下一行
  9. 1为每隔一行执行默认的打印行操作(最后一个字段与"不匹配)