我有一个包含超过 200,000 条记录的文件“records.txt”。
每条记录都在单独的行上,并具有由分隔符“|”分隔的多个字段。
每行应该有 35 个字段,但问题是其中一行有 <>35 个字段,即 <>35 '|' 人物。
有人可以在Unix中提出一种方法,我可以通过它来识别行。(比如在文件的每一行中获取“|”字符的数量)
试试这个:
awk -F '|' 'NF != 35 {print NR, $0} ' your_filefile
这个小的 perl 脚本应该这样做:
cat records.txt | perl -ne '$t = $_; $t =~ s/[^\|]//g; print unless length($t) == 35;'
这通过删除除| 之外的所有字符来工作,然后计算剩下的内容。
Greg 使用 bash 的方式,给 bash 的朋友们 :)
while read n; do [ `echo $n | tr -cd '|' | wc -c` != 35 ] && echo $n; done < records.txt