ブログ

1バイトずつファイルを比較する方法

at_shiita.ishigaki
2021年10月13日 9時01分

1バイトずつファイルを比較するにはcmpコマンドを使用します。
※ここでは例として、a.txtとb.txtを比較します。

[armadillo ~]# cat a.txt
abcdefg
[armadillo ~]# cat b.txt
abbcdefgh
[armadillo ~]# cmp a.txt b.txt
a.txt b.txt differ: byte 3, line 1

違いのある箇所が何バイト目かを表示するには-bオプションを使用します。

[armadillo ~]# cmp -b a.txt b.txt
a.txt b.txt differ: byte 3, line 1 is 143 c 142 b

入力ファイルの最初から特定のバイト数の比較を無視する場合は-iオプションを使用します。
※ここでは例として、a.txtは先頭から2バイト、b.txtは先頭から3バイト分比較を無視します。

[armadillo ~]# cmp -i 2:3 a.txt b.txt
a.txt b.txt differ: byte 6, line 1

これまでの処理は、1番最初に見つかった違いがある箇所で処理が終了していましたが、ファイルの最後まで比較を行うには、-lオプションを使用します。

[armadillo ~]# cmp -l a.txt b.txt
3 143 142
4 144 143
5 145 144
6 146 145
7 147 146
8  12 147
cmp: EOF on a.txt after byte 8