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 変数のデフォルト値は 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.combosdiff コマンドは、異なる行のグループごとに、どのグループを保持するか、または ed コマンドを使用して編集するかどうかを確認するプロンプトを出します。
  4. 2 つのファイルを結合して編集するには、staff.janおよびstaff.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.janおよびstaff.apr結果をファイルに書き込みます。staff.yearを適用します。 sdiff コマンドを実行すると、以下のように表示されます。
      Members of the Accounting Dept   Members of the Accounting Dept
      Andrea                            Andrea
      George                          | Fred
      %
      % (パーセント記号) は、コマンド・プロンプトです。
    2. ed コマンドを使用して出力ファイルの編集を開始するには、 e b サブコマンドを入力します。

      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 コマンドが入っています。