sdiff コマンド

目的

2 つのファイルを比較し、その違いを横に並べて表示します。

構文

sdiff-l | -s ] [  -o OutFile ] [  -w Number ] File1 File2

説明

sdiff コマンドは、File1 および File2 パラメーターで指定されたファイルを読み取り、diff コマンドを使用してそれらを比較し、結果を横並びフォーマットで標準出力に書き出します。 sdiff コマンドは、2 つのファイルの各行が同一であれば、間に一連のスペースを入れて、これらの行を表示します。 行が File1 パラメーターで指定されたファイルにしか存在しなければ、スペースのフィールドに < (不等号記号 (より小さい)) を表示し、> 行が File2 パラメーターで指定されたファイルにしか存在しなければ、(不等号記号 (より大きい)) を表示し、行が異なっている場合は | (縦線) を表示します。

-o フラグを指定すると、 sdiff コマンドは File1 および File2 パラメーターで指定されたファイルを組み合わせ、第 3 のファイルを生成します。

注: sdiff コマンドは、diff -b コマンドを呼び出して 2 つの入力ファイルを比較します。-b フラグを指定すると、 diff コマンドは後続のスペースとタブ文字を無視して、 他のスペース文字列を等しいものと見なします。

フラグ

項目 説明
-l 行が同一の場合に、左側だけを表示します。
-o OutFile File1 および File2 パラメーターで指定された 2 つのファイルの 1 行ずつの組み合わせを制御して、OutFile 変数で指定された第 3 のファイルを作成します。 以下のサブコマンドがこのファイルの作成を制御します。
e
空のファイルから ed コマンドを始動します。
e b または e |
両側から ed コマンドを始動します。
e l または e <
左側から ed コマンドを始動します。
e r または e >
右側から ed コマンドを始動します。
l
出力ファイルに左側を追加します。
r
出力ファイルに右側を追加します。
s
同一行の表示を中止します。
v
同一行の表示を開始します。
q
以下のいずれかの機能を実行します。
  • ed コマンドを終了します。
  • ed コマンドを実行中でなければ、sdiff コマンドを終了します。
  • 両方のコマンドを終了します。 このアクションは、出力ファイルに組み合わせる行がなくなったときに発生します。

ed コマンドを終了するたびに、sdiff コマンドは実行結果として編集されたファイルを OutFile 変数で指定されたファイルの終わりに書き込みます。 終了前に変更結果を保管しなければ (Ctrl-C キー・シーケンスを押すなど)、sdiff コマンドは初期入力を出力ファイルに書き込みます。

-s 同一行を表示しません。
-w Number 出力行の幅を設定します。 Number 変数のデフォルト値は 130 文字です。 Number 変数の最大幅は 2048 です。 Number 変数の最小幅は 20 です。 2048 よりも大きい値を指定すると、sdiff コマンドは 2048 を使用します。

終了状況

sdiff コマンドは、以下の終了値を戻します。
表 1. 終了状況
項目 説明
1 正常終了。
2 エラーが発生しました。

  1. 2 つのファイルの比較を出力するには、以下のように入力します。
    sdiff chap1.bak chap1 
    sdiff コマンドによって、 chap1.bak および chap1 ファイルの各行を比較する横並びのリストが表示されます。
  2. 異なる行だけを表示するには、以下のように入力します。
    sdiff  -s  -w 80 chap1.bak chap1
    sdiff コマンドによって、ワークステーションに違いが表示されます。-w 80 フラグおよび変数は、ページ幅を 80 カラムに設定します。 -s フラグは、両方のファイル内の同一の行は表示されないことを示します。
  3. 2 つのファイルの一部を選択的に結合するには、以下のように入力します。
    sdiff  -s  -w 80  -o chap1.combo chap1.bak chap1
    sdiff コマンドによって、chap1.bak および chap1 ファイルが結合され、chap1.combo という名前の新しいファイルが作成されます。 sdiff コマンドは、異なる行の個々のグループに対して、どのグループを保持するのか、あるいは、ed コマンドを使用して編集したいかどうかを尋ねるプロンプトを表示します。
  4. 2 つのファイル、 staff.janstaff.apr を組み合わせて編集し、 編集結果をファイル staff.year に書き込むには、以下の手順を実行します。

    ファイル staff.jan には、以下のような行が入っています。

    Members of the Accounting Department
    Andrea
    George
    Karen
    Sam
    Thomas
    ファイル staff.apr には、以下のような行が入っています。
    Members of the Accounting Department
    Andrea
    Fred
    Mark
    Sam
    Wendy
    1. 次のコマンドを入力します。
      sdiff -o staff.year staff.jan staff.apr
      sdiff コマンドは、 ファイル staff.janstaff.apr の内容を比較し、 結果をファイル staff.year に書き込みます。 sdiff コマンドを実行すると、以下のように表示されます。
      Members of the Accounting Dept   Members of the Accounting Dept
      Andrea                            Andrea
      George                          | Fred
      %
      % (パーセント記号) は、コマンド・プロンプトです。
    2. e b サブコマンドを入力して、ed コマンドによる出力ファイルの編集を開始します。

      sdiff コマンドは、組み合わせ中のバイト数を示す一連の数値を表示します。 この場合、バイト数は 23 です。

    3. q サブコマンドを入力して ed コマンドを実行し、2 つのファイルの組み合わせと編集を続けます。sdiff コマンドを実行すると、以下のように表示されます。
      
      Sam                              Sam
      Thomas                          | Wendy
        
    4. e b サブコマンドを再度入力します。元の 2 つのファイルの行のセットを出力ファイルに組み合わせるたびに、ed コマンドを実行しなければなりません。この場合のバイト数は 13 です。
    5. q サブコマンドを入力して変更結果を保管します。2 つのファイルのすべての行が出力ファイルに組み合わされると、 q サブコマンドは ed および sdiff コマンドを終了します。
    このとき、staff.year ファイルの内容は以下のようになっています。
    
    Members of the Accounting Department
    Andrea
    George
    Karen
    Fred
    Mark
    Sam
    Thomas
    Wendy

ファイル

項目 説明
/usr/bin/sdiff sdiff コマンドが入っています。