【发布时间】:2016-10-19 20:01:25
【问题描述】:
如何使用 awk 正确转义多个引号和逗号,以分隔由引号括起来的 csv 字段?下面的例子应该更清楚:
有:
mike,3
"first, second",6
"height 6""7""", good","4, 5"
想要(用 [] 标记的所需分隔):
[mike] [3]
["first, second"] [6]
["height 6""7""", good"] ["4, 5"]
尝试GNU awk with the FPAT variable 没有运气:
gawk -vFPAT="([^,]+)|(\"[^\"]+\")" '{print $1}' my_file.csv
mike
"first, second"
"height 6""7""" # note the missing ", good"
Excel 和/或 LibraOffice 可以正确解析此 csv 而不会出现问题。必须有一种方法来解析它。非常感谢您的帮助。
【问题讨论】:
-
使用 PHP/python 的正确 CSV 解析器而不是 awk
-
谢谢@anubhava。我应该添加一些上下文。这是几 GB 数据(Mapreduce 作业的输出)的数据管道的一部分,我想做更多的流编辑以将数据缩小到可管理的大小以输入 python。