sumコマンドでバイナリファイルのByte毎のSUMができます。
sum -s ファイル
~$ seq 10 | perl -ne 'print chr' > a.bin ~$ od -tx1 -An a.bin 01 02 03 04 05 06 07 08 09 0a ~$ sum -s a.bin 55 1 a.bin ~$
上記のように結果は、
SUM値 ブロック番号 ファイル名
の順序でされます(ブロック番号は、512Byte毎に1アップ)
~$ seq 512 | perl -ne 'print chr 1' > b.bin ~$ sum -s b.bin 512 1 b.bin ~$
~$ seq 513 | perl -ne 'print chr 1' > c.bin ~$ sum -s c.bin 513 2 c.bin ~$
sumコマンドはByte毎ですので、2Byte毎、4Byte毎のSUMを計算したい時は、sumコマンドで求めるのはあきらめて、代わりにhexdump + awkで求めましょう。
~$ hexdump -ve '/2 "%d\n"' c.bin | awk '{sum+=$1}END{print sum}' 65792 ~$ hexdump -ve '/4 "%d\n"' c.bin | awk '{sum+=$1}END{print sum}' 2155905153 ~$
コメント