OpenWindows ユーザーズガイド (上級編)

ファイル間の相違点を検出する (diff)

各ユーザが別々に同一のファイルをコピーし、そのコピーを編集するという場合があります。その場合 diff コマンドを使うと、バージョンの異なるファイルについて相違点を検出することができます。次のコマンドは、leftfilerightfile の各行を走査して相違点を表示します。

$ diff leftfile rightfile

異なる行が見つかると、diff はその相違の原因 (行の追加、削除、変更) と影響を受けた行数を判断し、各ファイル内の個々の相違箇所の行番号と該当テキストを表示します。

相違の原因が行の追加による場合、diff は次の形式で行番号を表示します。

   
l[,l] a r[,r]

lleftfile の行番号、rrightfile の行番号です。

相違の原因が行の削除による場合は、上記の a の代わりに d が表示され、行の変更による場合は c が表示されます。

各ファイル内の該当行は、行番号情報の次の行に表示されます。leftfile 内のテキストの前には左角括弧 (<) が付き、rightfile 内のテキストの前には右角括弧 (>) が付きます。

次の例では、最初に 2 つのファイルの内容を表示し、その後で diff コマンドを使ってそれらの相違点を表示しています。

$ cat sched.7.15
Week of 7/15

Day:  Time:        Action Item:          Details:

T     10:00        Hardware mtg.         every other week
W     1:30         Software mtg.
T     3:00         Docs. mtg.
F     1:00         Interview
$ cat sched.7.22
Week of 7/22

Day:  Time:        Action Item:          Details:

M     8:30         Staff mtg.            all day
T     10:00        Hardware mtg.         every other week
W     1:30         Software mtg.
T     3:00         Docs. mtg.
$ diff sched.7.15 sched.7.22
1c1
< Week of 7/15
---
> Week of 7/22
4a5
> M     8:30         Staff mtg.            all day
8d8
< F     1:00         Interview

比較される 2 つのファイルの内容が同じであれば、diff コマンドを実行しても、何も出力されません。

diff コマンドには、この節で説明した以外にも多数のオプションがあります。詳細については、『SunOS リファレンスマニュアル (1): ユーザーコマンド』を参照してください。

3 つのファイルを比較する (diff3)

あるファイルの 3 つのバージョンを同時に比較する場合は、次に示す diff3 コマンドを使います。

$ diff3 file1 file2 file3

diff3 コマンドはファイルの 3 つのバージョンを比較し、内容が異なる範囲に以下のコードを付加して表示します。

====      3 つのファイルがすべて異なる
====1     file1 が他の 2 つと異なる
====2     file2 が他の 2 つと異なる
====3     file3 が他の 2 つと異なる

大きいファイルを bdiff を使って比較する

非常に大きいファイルを比較する場合は、diff の代わりに bdiff コマンドを使います。bdiff の使い方と出力内容は、diff と同じです。

$ bdiff leftfile rightfile

3500 行以上のファイルでは、diff ではなく bdiff を使ってください。