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

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

似ているファイル間の違いを確認するには diff コマンドを使用します。次のコマンドは leftfilerightfile の各行を走査して相違点を表示します。


$ diff leftfile rightfile

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

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


   
l[,l] a r[,r]

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

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

各ファイル内の該当テキストは、行番号情報の次の行に表示されます。leftfile 内のテキストの前には左角括弧 (<) が付き、rightfile 内のテキストの前には右角括弧 (>) が付きます。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 コマンドを実行しても何も出力されません。

diff1 コマンドについての詳細は、『man pages section 1: User Commands』を参照してください。

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 を使ってください。