【发布时间】:2016-12-26 16:22:02
【问题描述】:
我有一个包含数百万条记录的 csv 文件,如下所示
1,,,,,,,,,,a,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,,,456,,,,,,,,,,,,,,,,,,,,,3455,,,,,,,,,,
1,,,,,,,,,,b,,,,,,,,,,,,,,,,5,,,,,,,,,,,,,,,467,,,,,,,,,,,,,,,,,,,,,3445,,,,,,,,,,
2,,,,,,,,,,c,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,567,,,,,,,,,,,,,,,,,,,,,4656,,,,,,,,,,
我必须删除两个值之间多余的逗号并只保留一个。示例输入的输出应如下所示
1,a,4,456,3455
1,b,5,467,3445
2,c,6,567,4656
我如何使用 shell 来实现这一点,因为它也会自动处理其他文件。 我需要将此数据加载到数据库中。我们可以用 R 来做吗?
【问题讨论】:
-
awk -F',*' 'BEGIN{OFS=","}; {print $1,$2,$3,$4,$5}' file -
@Cyrus 不错!应该得到一个正确的答案。
-
@Jean-FrançoisFabre:这仅适用于已知列数。
-
@Cyrus:您可以对字段数进行循环。但是是的
sed永远:) 虽然我听说awk快一点。 -
非常感谢。我没有提到我有很多像上面这样的列。在那种情况下它也可以工作吗?
标签: r bash shell csv command-line