【发布时间】:2014-09-17 17:15:57
【问题描述】:
我有一个 .csv 文件,我需要在其中删除一个坏列。此列包含“额外”分隔符。所以第 10 列的内容中有逗号。它们不是双引号。所以我需要将前 9 列与后 33 列结合起来。这样,由于在第 10 列中使用逗号而导致的行上的“额外”列将被删除。 谁能给我一个 awk、cut、perl 的正则表达式示例,任何可以让我“修复”这些不良数据的东西?
谢谢
这是我所拥有的:
field1,field2,field3,field4,field5,field6,field7,field8,field9,field10,field11,field12,field13,field14,field15,field16,field17,field18,field19,field20,field21,field22,field23,field24,field25,field26,field27,field28,field29,field30,field31,field32,field33,field34,field35,field36,field37,field38,field39,field40,field41,field42,field43,field44,field45
field10 是一个注释字段,一些记录在数据中有逗号,因此它会抛出导入过程,因为它认为有 48 个或 50 个等而不是认为有 45 个字段。
所以我需要前 9 个字段,后面还有 35 个字段。 我尝试了 Ed 的答案,但它没有“剪切”并正确组合
$ sed -r 's/(([^,]+,){9}).*(([^,]+,){33}[^,]+)$/\1\3/' headers.example.csv
field1,field2,field3,field4,field5,field6,field7,field8,**field9,2,field13**,field14,field15,field16,field17,field18,field19,field20,field21,field22,field23,field24,field25,field26,field27,field28,field29,field30,field31,field32,field33,field34,field35,field36,field37,field38,field39,field40,field41,field42,field43,field44,field45
所以任何进一步的建议将不胜感激。
谢谢
【问题讨论】:
-
发布一些示例以及您尝试解决的问题。
-
如果您遵循@Jotne 的建议,并为我们提供您正在使用的文件中的几行代码以及您想要的输出示例,这将更容易为您提供帮助。仅凭描述很难形象化。