ファイルの各行のバイト数を確認したいと思います。
バイト数が予想数字でない場合は、レコードとその行番号が新しいファイルに保存されます。
ベストアンサー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バイトまたは非常に長い行を含む入力をブロックします。
GNU では、awk
以下を使用して区切り文字を含むレコード長を取得することはできませんが、取得できます。
<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
。