我有一个'records.txt'文件,其中包含超过200,000条记录。
每条记录都在一个单独的行上,并且有多个字段用分隔符“|”分隔。
每行应包含35个字段,但问题是其中一行包含<> 35个字段,即<> 35'|'字符。
有人可以在Unix中建议一种方法,通过它我可以识别该行。 (比如在文件的每一行中计算'|'字符)
答案 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