SDIFF(1)

名称
sdiff - 2 つのファイルの違いを調べ、インタラクティブにマージを行う

書式
sdiff -o outfile [options] from-file to-file

解説
sdiff は、2 つのファイルつを読み込んで 1 行ずつ比較していき、違いがあった行 について、ユーザにどう処理するか問い合わせながら、マージしていき、 結果を outfile に出力するコマンドです。 もし、 from-file としてディレクトリを指定し、 to-file がディレクトリでなかった場合、 sdiff は、 to-file で指定したファイル名と同じ名前のファイルを from-file のディレクトリから捜して、そのファイルとの間で比較を行います。 その逆も同じです。 from-file と to-file の両方にディレクトリを指定することはできません。 通常、 sdiff は、2 つのファイルを比較し易いよう、1 行の左側と右側に分けて表示します。 表示の意味は次の通りです。

file1 と file2 が同じ行の場合
    file1の内容      file2の内容
    file1 にだけにある行の場合
    file1 の内容    <

file2 にだけにある行の場合
    > file2 の内容

file1 と file2 が異なる場合
    file1 の内容    | file2 の内容

オプション -o (もしくは、 --output) を指定しない場合は、単にこの表示を行うだけです。オプション -o で出力ファイルを指定すると、 sdiff は、 from-file と to-file が同じでない行があった場合、`%' のプロンプトを表示して、 どう処理するか聞いて来ます。この時、キーボードから次のような入力を行う ことで、マージ処理を決定できます。

l   左側 (from-file) の内容をマージする

r   右側 (to-file) の内容をマージする

e l 左側の内容をエディトした上で、マージする

e r 右側の内容をエディトした上で、マージする

e   新たに内容をエディトした上で、マージする

s   以後、同一の行については、表示をしない

v   以後、同一の行についても、表示を行う

q   マージ処理を終了する

エディト時は、環境変数 EDITOR で指定されていれば、そのエディタが、なければ、 ed が起動されます。

GNU sdiff の主なオプションは以下のものがあります。他にも多くのオプションがあります。

なお、 -- だけの指定はオプションの終了を意味し、以降は from-file および to-file の指定になるものとみなします。この方法を使えば、 - で始まるようなファイル名など、 sdiff がオプションの指定と誤って解釈してしまうような場合に有効です。

-a

--text
    テキストファイルでないようなものについても、全てのファイルをテキストと みなして、1 行ずつ比較していきます。

-b

--ignore-space-change
    空白の数の違いを無視します。

-W

--ignore-all-space
    比較時に、空白は無視するようにします。

-B

--ignore-blank-lines
    空行が入っているもしくは足りないなどの違いは無視します。

-d

--minimal
    小さい違いを見つけるアルゴリズムを変更します。これをつけると sdiff が遅くなります。

-H

--speed-large-files
    大きなファイルで、小さな違いがあちこちにあるような物を扱う時に、 高速になることもあります。

-t

--expand-tabs
    出力時に、タブをスペースに変換します。

-i

--ignore-case
    英大文字と小文字の違いを無視します。

-I regexp

--ignore-matching-lines=正規表現
    regexp (正規表現) にマッチした行は、比較対象から外します。

-l

--left-column
    同一の行については、左側だけ表示するようにします。

-o file

--output=file
    マージした結果を file で指定したファイルに書き出します。 このオプションを指定する事でマージが実行されます。

-s

--suppress-common-lines
    同一の行については、表示しないようにします。

-v

--version
    本プログラムのバージョンを表示します。

-w columns

--width=columns
    1 行の幅を columns で指定した文字数にします。古いバージョンとの互換のため、 diff の幅の指定は、 -W ですが、 sdiff では、 -w になっています。

関連項目
cmp(1), comm(1), diff(1), diff3(1)

戻り値
比較結果として、違いが無かった場合は、0 を、違いが発見された場合は 1 を、 何かエラーがおきた場合は、2 を返します。