5

我有一个包含超过 200,000 条记录的文件“records.txt”。

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

每行应该有 35 个字段,但问题是其中一行有 <>35 个字段,即 <>35 '|' 人物。

有人可以在Unix中提出一种方法,我可以通过它来识别行。(比如在文件的每一行中获取“|”字符的数量)

4

3 回答 3

12

试试这个:

awk -F '|'  'NF != 35 {print NR, $0} ' your_filefile
于 2009-01-14T10:07:56.113 回答
1

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

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

这通过删除| 之外的所有字符来工作,然后计算剩下的内容。

于 2009-01-14T10:03:02.787 回答
1

Greg 使用 bash 的方式,给 bash 的朋友们 :)

while read n; do [ `echo $n | tr -cd '|' | wc -c` != 35 ] && echo $n; done < records.txt
于 2009-01-14T11:05:03.910 回答