【发布时间】:2018-04-01 17:53:21
【问题描述】:
我知道对此有很多问题(最新的here.),但几乎所有问题都是如何将这些虚线从 csv 文件中合并为一条或删除它们。我不想删除,但我只想显示/查找该行(或者可能是行号?)
示例数据:
22224,across,some,text,0,,,4 etc
33448,more,text,1,,3,,,4 etc
abcde,text,number,444444,0,1,,,, etc
358890,more
,text,here,44,,,, etc
abcdefg,textds3,numberss,413,0,,,,, etc
985678,93838,text,,,,
,text,continuing,from,previous,line,,, etc
对此进行更多搜索,我知道我不应该使用bash 来完成此操作,而应该使用perl。我试过(来自不同的网站,我不知道 perl),但显然我没有 Text::CSV 包,我没有安装的权限。
正如我所说,我什至不知道如何开始寻找这个,所以我没有任何脚本。这是not 一个windows 文件,这是非常多的unix 文件,所以我们可以忽略CR 问题。
期望的输出:
358890,more
,text,here,44,,,, etc
985678,93838,text,,,,
,text,continuing,from,previous,line,,, etc
或
Line 4: 358890,more
,text,here,44,,,, etc
Line 7: 985678,93838,text,,,,
,text,continuing,from,previous,line,,, etc
非常感谢。
【问题讨论】:
-
您如何确定一条记录的开始和结束位置?它们都具有相同数量的字段吗?
-
@123 是的,它们的字段数相同,字段分隔符为
,。但问题是,我不知道有多少字段。我可以使用文件头找到这个,对吗? -
我们不知道,这取决于。符合 RFC-4180 的 CSV 应该有一条记录,而你的没有,所以我们无法做出任何假设
-
也许你可以通过查看文件推断出其他规则。以数字开头的每一行是否都标志着新记录的开始?是否只有以逗号开头的行标记当前记录的延续?
-
在您的示例中,几乎每个“记录”都有不同数量的字段。您确定要向我们提供具有代表性的数据样本吗?