【发布时间】:2022-01-27 20:24:21
【问题描述】:
我尝试了不同的 awk 方法来实现这一点,但由于我不太了解 awk 的工作原理,所以我没有成功。
所以,我有一个 - 大 - csv 文件,其中包含多行条目,例如:
"99999";"xyz";"text
that has
multiple newlines";"fdx";"xyz"
我需要去掉引号之间的那些多余的换行符。
由于每一行都以双引号结尾,后跟换行符,我想我可以创建一个替换所有换行符的命令,除了前面有双引号的换行符。
我该怎么做?
【问题讨论】:
-
您搜索了什么,找到了什么?你尝试了什么,它是如何失败的?使用具有强大且经过良好测试的 CSV 解析器的工具(例如 Python)可能会更容易,而不是自己从第一原则重新构建。
-
但本质上,如果你有不成对的报价,收集更多的行直到你再次有报价,然后对你收集的数据进行后处理。
-
试试这个
sed命令:sed '/^$/D' infile | sed -e :a -e '$!N;s/[^"]\n"/"/;ta' -e 'P;D'`` -
谢谢大家 - 我找到了实现我想要的所需的正则表达式:
(?<!")\n但遗憾的是 awk 不支持前瞻/前瞻。
标签: awk