我试图解决一个问题一段时间但没有成功。一开始它看起来像一个微不足道的问题,但我已经堆积了它......
无论如何,我需要解决以下问题。我有非常大的 CSV 文件,其中包含以下格式的行:
NUMBER(9);NUMBER(1);NUMBER(9-10);NUMBER(2);NUMBER(1);...;NUMBER(2);NUMBER(1);STRING;DATE(DD.MM.YYYY);NUMBER(1351)
例如:
517755369;1;0001303717;48;1;63;8;50;2;51;6;53;7;55;3;57;4;59;5;;;;;CALL;07.12.2012;1351
在第一个树字段之后的每一行中,我有 1 到 10 对NUMBER(2);NUMBER(1)
,然后是另外三个字段STRING;DATE(DD.MM.YYYY);NUMBER(1351)
。
我需要将该文件转换为具有以下结构的文件:
517755369;1;0001303717;48;1;CALL;07.12.2012;1351
517755369;1;0001303717;63;8;CALL;07.12.2012;1351
517755369;1;0001303717;50;2;CALL;07.12.2012;1351
517755369;1;0001303717;51;6;CALL;07.12.2012;1351
517755369;1;0001303717;53;7;CALL;07.12.2012;1351
517755369;1;0001303717;55;3;CALL;07.12.2012;1351
517755369;1;0001303717;57;4;CALL;07.12.2012;1351
517755369;1;0001303717;59;5;CALL;07.12.2012;1351`
因此,输入文件中的每一行都应转换为与原始行NUMBER(2);NUMBER(1)
对数一样多的行。
这是输入文件的示例:
517760344;2;000601301061;31;1;;;;;;;;;;;;;;;;;;;CALL;07.12.2012;1351
518855369;1;000601303717;48;1;63;8;50;2;51;6;53;7;55;3;57;4;59;5;;;;;CALL;07.12.2012;1351
519775067;1;000601300771;4;2;6;3;19;1;;;;;;;;;;;;;;;CALL;07.12.2012;1351
617773407;1;000603252922;13;1;17;2;27;3;;;;;;;;;;;;;;;CALL;07.12.2012;1351
717764779;1;000601304021;31;1;;;;;;;;;;;;;;;;;;;CALL;07.12.2012;1351`
一般来说,我需要一些可以与sed或awk一起使用的正则表达式(或者一些我可以针对输入文件运行的perl脚本)。原始输入文件大约有 1-150 万条记录。此任务应尽快完成(最多 5 分钟进行转换)。
谢谢