在csv文件中查找换行符

时间:2017-10-20 14:19:40

标签: bash perl csv unix

我知道有很多关于此的问题(最新的一个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

非常感谢。

2 个答案:

答案 0 :(得分:4)

您可以使用perl来计算字段数(逗号),并附加下一行,直到达到正确的数字

perl -ne 'if(tr/,/,/<28){$line=$.;while(tr/,/,/<28){$_.=<>}print "Line $line: $_\n"}' file

答案 1 :(得分:1)

我爱Perl,但我不认为这是这项工作的最佳工具。

如果您想要所有行的报告没有正确数量的逗号/分隔符,您可以使用unix语言awk

例如,这个命令:

/usr/bin/awk -F , 'NF != 8' < csv_file.txt

将打印所有不完全7 commas的行。逗号被指定为包含-F的字段,字段数用NF指定。