【发布时间】:2020-02-25 08:14:02
【问题描述】:
我有一个包含一堆 CSV 行的文件,其中包含带和不带引号的值,如下所示:
"123","456",,17,"hello," how are you this, fine, highly caffienated morning,","2018-05-29T18:58:10-05:00","XYZ",
"345","737",,16,"Heading to a "meeting", unprepared while trying to be "awake","2018-05-29T18:58:10-05:00","ACD",
第五列是一个文本列,它有转义或非转义双引号。我正在尝试删除此列中的所有引号,使其看起来像这样
"123","456",,17,"hello, how are you this, fine, highly caffeinated morning,","2018-05-29T18:58:10-05:00","XYZ",
"345","737",,16,"Heading to a meeting, unprepared while trying to be awake","2018-05-29T18:58:10-05:00","ACD",
任何想法如何使用 SED 或 AWK 或任何其他 unix 工具来实现这一点?非常感激!
【问题讨论】:
-
能否告诉我们这是否是一个正确的 csv 文件?看起来
,,16from 行没有""围绕值? -
前四个没问题,你不知道第五个在哪里结束你不能用逗号或引号来分隔它,但第六个包含一个日期。假设第五列中没有 ISO 格式的日期,您可以使用它来了解第五列的结束位置。
-
从“caffeinated”的拼写来看,您没有复制并粘贴此示例。
-
通常没有可靠的方法来做这样的事情。它应该如何知道哪些是正确的引号,哪些是需要删除的?
-
@RavinderSingh13 我认为这正是整个问题的重点。我们有一个无效的 CSV 文件,我们怎样才能使它成为一个有效的文件。
标签: regex awk sed replace quotes