检查文件每行的字节数

检查文件每行的字节数

我想检查文件每一行的字节数。

如果字节数不是预期的数字,则将记录及其行号存储在新文件中。

答案1

尝试:

expected=72
<a-file LC_ALL=C grep -nxvE ".{$expected}" >a-new-file

或者:

<a-file LC_ALL=C awk -v expected=72 '
  length != expected {print FNR, $0}' >a-new-file

length返回不带行分隔符的长度。请注意,某些grep/awk实现会因包含 NUL 字节或非常长的行的输入而阻塞。

GNUawk不会但可以通过以下方式获取包括分隔符的记录长度:

<a-file LC_ALL=C gawk -v expected=73 '
  length($0 RT) != expected {print FNR, $0}' >a-new-file

或者你可以使用perl

<a-file perl -nse '
  print "$. $_" unless length($_) == $expected' -- -expected=73 >a-new-file

-l如果您不想考虑行分隔符,请添加该选项。perl无论区域设置如何,默认情况下都使用字节,因此您不需要LC_ALL=C.

相关内容