如何使用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而不会打嗝。必须有办法解析它。非常感谢你的帮助。
答案 0 :(得分:1)
这应该有用......
$ awk -v FPAT='[^,]+|"[^"]+"|"([^"]*""+[^"]*)+"' ...
但是,我认为需要折叠多个引号。
行动中
$ awk -v FPAT='[^,]+|"[^"]+"|"([^"]*""+[^"]*)+"' -v OFS='> <' '{print "<"$1,$2">"}' file
<mike> <3>
<"first, second"> <6>
<"height 6""7""", good"> <"4, 5">