ファイルの1行あたりのバイト数を確認する[閉じる]

ファイルの1行あたりのバイト数を確認する[閉じる]

ファイルの各行のバイト数を確認したいと思います。

バイト数が予想数字でない場合は、レコードとその行番号が新しいファイルに保存されます。

ベストアンサー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

おすすめ記事