【发布时间】:2026-01-13 03:15:01
【问题描述】:
我有一个文件“records.txt”,其中包含超过 200,000 条记录。
每条记录位于单独的行中,并具有由分隔符“|”分隔的多个字段。
每行应该有 35 个字段,但 问题是这些行之一有 35 个字段,即 35 '|'字符。
有人可以在 Unix 中提出一种方法,我可以通过它来识别行。 (比如获取文件中每一行中“|”字符的数量)
【问题讨论】:
我有一个文件“records.txt”,其中包含超过 200,000 条记录。
每条记录位于单独的行中,并具有由分隔符“|”分隔的多个字段。
每行应该有 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
【讨论】: