算不了。在Unix中的文件中连续分隔符

时间:2009-01-14 09:57:40

标签: unix shell records

我有一个'records.txt'文件,其中包含超过200,000条记录。

每条记录都在一个单独的行上,并且有多个字段用分隔符“|”分隔。

每行应包含35个字段,但问题是其中一行包含<> 35个字段,即<> 35'|'字符。

有人可以在Unix中建议一种方法,通过它我可以识别该行。 (比如在文件的每一行中计算'|'字符)

3 个答案:

答案 0 :(得分:13)

试试这个:

awk -F '|'  'NF != 35 {print NR, $0} ' your_filefile

答案 1 :(得分:1)

这个小的perl脚本应该这样做:

cat records.txt | perl -ne '$t = $_; $t =~ s/[^\|]//g; print unless length($t) == 35;'

这可以删除除之外的所有字符,然后计算剩下的内容。

答案 2 :(得分:1)

格雷格用bash的方式,对于那里的bash朋友:)

while read n; do [ `echo $n | tr -cd '|' | wc -c` != 35 ] && echo $n; done < records.txt