我知道有很多关于此的问题(最新的一个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
非常感谢。
答案 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
指定。