【发布时间】:2014-02-09 04:23:01
【问题描述】:
我有以下架构的输入
10,0,'string1_string2,_string3','',8,0,0,0.59,'20140101205216','20140128074836',584266915,5934
我想使用 sed 将所有逗号“,”字符替换为制表符。约束是不替换文本字符串中的“,”(即,'string1_string2,_string3' 中的逗号不应替换为制表符)。执行此操作的正则表达式是 ,(?!,_)。
但是下面的 sed 不起作用。我也尝试过所有转义排列。
sed s/",\(\?\!,_\)"/"\t"/g
有没有办法做到这一点?
【问题讨论】:
-
我会使用 Perl 程序来读取该行,根据 CSV 字段将其分解,修改相关字段,然后重建该行。以非结构化方式处理结构化数据是一场长期的噩梦。
-
感谢 Johanthan 和下面的其他人。是的,你说得很对。我做过很多噩梦。按照你的建议,我有一个解决方案。