【发布时间】:2015-11-01 00:16:21
【问题描述】:
我目前正在努力清理使用 sed 或 awk 或通过脚本自动生成的包含 csv 分隔符和字段分隔符的字段的 csv 文件。
源软件没有可用于改善情况的设置。
csv 格式:
"111111";"text";"";"text with ; and " sometimes "; or ;" multiple times";"user";
幸运的是,csv 格式“很好”,导出软件不会转义或替换字段中的“禁止”字符。
这几天我试图提高我对正则表达式的了解,并找到表达式来清理文件,但我失败了。
到目前为止我所做的事情:
RegEx 查找字段(我想查找字段并在内部执行替换,但我没有找到方法)
(?:";"|^")(.*?)(?=";"|";\n)
查找分号的正则表达式,如果分号是字段的最后一个字符,则不起作用,每个字段只能找到一个。
(?:^"|";")(?:.*?)(;)(?:[^"\n].*?)(?=";"|";\n)
RegEx 查找双引号,似乎在在线正则表达式测试器中选择该行的第一个双引号
(?:^"|";")(?:.*?)[^;](")(?:[^;].*?)(?=";"|";\n)
我想在字段中的每个字符之间添加空格,然后搜索单独的分号和双引号,然后删除单个空格,但我不知道这是否可行,而且似乎是一个糟糕的解决方案。
【问题讨论】: