Unix 向最后一个值添加双引号

Unix 向最后一个值添加双引号,unix,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

我有以下格式的数据

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"

这可能适合您:

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

  • 描述您的需求和要求他人为您编写代码或解释如何编写代码的问题与堆栈溢出无关。请确定有关编程的特定问题或问题。包括尝试的解决方案、解释结果与预期结果之间的差异,以及您收到的任何错误消息。请仔细阅读这一页并阅读。