【发布时间】:2021-10-30 06:27:56
【问题描述】:
我的 csv 文件如下所示:
12625,6475,387,-388,-332,-217,-104,17,125,160,121,38,-101,-282,-368
-2675,6475,420,-385,-330,-217,-106,16,124,158,120,37,-104,-281,-365
2725,6475,633,-377,-327,-222,-117,6,113,148,109,26,-114,-282,-359
-12775,6475,927,-367,-324,-229,-133,-9,99,134,95,11,-128,-283,-351
12825,64751200,-357,-320,-236,-147,-23,86,121,82,-3,-140,-283,-344
^ missing comma
在某些行中,示例的最后一行显示了问题,其中第二列和第三列之间缺少逗号。我从数据中知道,合法条目最多可以有 5 个数字(在某些情况下,前面有一个 -),所有有 8 个数字的条目都来自缺少的逗号,逗号应该出现在第四个数字之后。
我正在查看一个表达式 - 大概是 sed - 在文件中所有 8 位数字的第四位数字之后插入一个逗号。
到目前为止我所拥有的是
echo "12356" | sed 's/\B[0-9]\{3\}/&,/g'
这将在四位数字后插入一个逗号。如何过滤以使这种情况仅发生在 8 位数字上,而不是 5 位数字上。
我也愿意采用任何更优雅的方式来解决该问题。
谢谢
【问题讨论】:
-
与尝试检测损坏的数据并直觉其正确形式相比,修复生成损坏数据的原因难道不是远更可取的吗?
-
我一般会同意,但在这种情况下,我是这样得到的,并且无法控制它是如何生成的。