我想检查文件每一行的字节数。
如果字节数不是预期的数字,则将记录及其行号存储在新文件中。
答案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
.