区切り文字を持つバイナリファイルのレコード数を決定する方法

区切り文字を持つバイナリファイルのレコード数を決定する方法

与えられたバイナリファイルのレコード数を確認したいと思います。ファイル区切り文字はユーザー入力として使用されます。全体をどのように進めますか?

答え1

LC_ALL="C" awk -v RS="${Delim}" 'END { print NR; }' < filename

RSはレコード区切り文字で正規表現であるため、エラー(誤った正規表現など)が発生するとスクリプトは失敗します。

LC_ALL = "C"は、バイナリのランダムバイト値がUTF-8エンコーディングとして解釈される可能性がある問題を回避するための一時エクスポートです。

しかし、各整数、浮動小数点、または二重のシングルバイト範囲が0x00から0xFFまでのバイナリファイルで指定された区切り文字がどのように機能するかを理解したいと思います。

区切り文字以外のすべてのバイトを削除してから、残りのバイトを計算することもできます。この場合、Delimはパターンではありませんが、マニュアルページに応じてエスケープする必要がある文字セットです。

tr -cd "${Delim}" < filename | wc -c

trの「set」はマルチバイトエントリではありません。 「ab」は、「ab」ではなく「a」または「b」をテストします。

関連情報