GNU/Linux >> Linux の 問題 >  >> Linux

同じバイトをグループ化して、ファイル内のバイト数をカウントする方法は?

これは od を使用して 1 行に 1 つの 16 進数値を表示し、並べ替えてカウントします:

od -t x1 -w1 -v -An mybinaryfile | sort | uniq -c

(-w1 は拡張機能であり、POSIX では義務付けられていません。)


Perl を使用して丸呑みファイルをバイト配列にアンパックし、ハッシュを使用して一意のバイト数をカウントします:

printf '\xA0\x01\x00\xFF\x77\x01\x77\x01\xA0' | 
  perl -0777 -nE '
    @bytes = unpack("C*",$_) 
    }{ 
    $counts{$_}++ for @bytes; 
    for $k (sort { $a <=> $b } keys %counts) {
      printf "%02X: %d\n", $k, $counts{$k}
    }
 '
00: 1
01: 3
77: 2
A0: 2
FF: 1

List::MoreUtils の十分に新しいバージョンの場合 frequency を使用してカウントを簡素化できる場合があります。 関数。


Linux
  1. 出力をファイルに追加する方法は?

  2. system() の出力をファイルにリダイレクトする方法は?

  3. Bash変数の文字数をカウントするにはどうすればよいですか

  1. ファイルの行数だけを取得する方法

  2. PowerShell で文字数、単語数、行数を数える

  3. Linux を使用してドライブ内のフォルダー数をカウントするにはどうすればよいですか?

  1. ファイルの最後に改行を追加するにはどうすればよいですか?

  2. ディレクトリ内のファイルの数を数え、その数が5を超えた場合に最も古いものを削除するにはどうすればよいですか?

  3. デフォルトのファイルマネージャを見つける方法は?