【发布时间】:2010-11-13 12:35:31
【问题描述】:
我需要修改一组 4 个大型 CSV 文件。我需要做的是匹配这个表达式/^(.*),,/ 复制原子,然后将其添加到每个后续行,直到原子再次匹配。然后我需要冲洗并重复直到文件结束(每个文件大约有 25k 行)。最后我需要返回并移除第一个原子。
如果可能的话,我想为此使用 sed。我尝试用 vim 做,但无法正确使用正则表达式。任何帮助将不胜感激。下面举例说明:
之前:
0917,,
,882-1273,1
,95F 9475,1
,276-080,1
,40K 0080,1
,275-690A,1
,TX-2311,3
,TX-3351,4
,B-07432,1
,B-6901,1
,23-753,1
,02F 4307,1
,5.1K QBK-ND,1
,0944-026,1
,0944-027,1
,0944-004,1
,0944-056,1
,0944-057,1
,0944-082,1
,0944-024,1
,0944-025,1
,0944-102,4
,LOR 102,1
0918,,
,CJ1085,1
,1352-152,4
,DMS3102A-18-,1
,6-32 KEP,7
,6-32 X 3/4,4
,6-32X1/2,4
,1251-102,8
,Oct-32,4
,10-32 SAE,8
之后:
0917,882-1273,1
0917,95F 9475,1
0917,276-080,1
0917,40K 0080,1
0917,275-690A,1
0917,TX-2311,3
0917,TX-3351,4
0917,B-07432,1
0917,B-6901,1
0917,23-753,1
0917,02F 4307,1
0917,5.1K QBK-ND,1
0917,0944-026,1
0917,0944-027,1
0917,0944-004,1
0917,0944-056,1
0917,0944-057,1
0917,0944-082,1
0917,0944-024,1
0917,0944-025,1
0917,0944-102,4
0917,LOR 102,1
0918,CJ1085,1
0918,1352-152,4
0918,DMS3102A-18-,1
0918,6-32 KEP,7
0918,6-32 X 3/4,4
0918,6-32X1/2,4
0918,1251-102,8
0918,Oct-32,4
0918,10-32 SAE,8
【问题讨论】:
-
好问题!问题并不过分宽泛,您对您正在尝试做的事情有一个相当清晰的描述,并且您有一个输入和所需输出的详细示例。向你致敬!我希望更多的 SO 用户能够根据这个标准制定他们的查询。
-
这个数据集是否曾经通过 Excel?
0918,Oct-32,4行在我看来很可疑。 -
@bsisco 我会仔细检查
0918,Oct-32,4行。 -
@Sinan 不错。它应该是 10-32,就像它下面的行 +1 给你先生
-
@bsisco 谢谢。请记住:除非绝对必要,否则不要让 Excel 触及您的数据:abovethelaw.com/2008/10/the_case_for_sleep_what_happen.phpnetworkworld.com/news/2008/… 等