Next: Example If-then-else, Previous: Line Formats, Up: If-then-else
両方のファイルで共通の行に対し,diffは変更されていない行のグルー プ書式を使用します.マージされた出力書式の差異部分のそれぞれのhunkに対し, hunkが最初のファイルの行だけを含んでいる場合,diffは古い行のグ ループ書式を使用します.hunkが二番目のファイルの行だけを含んでいる場合, diffは新しい行のグループ書式を使用します.それ以外の場合, diffは変更されたグループ書式を使用します.
古いもの,新しいもの,そして変更されている行の書式はそれぞれ,最初のファ イルの行,二番目のファイルの行,そして両方のファイルに共通の行の出力書式 を指定します.
オプション--ifdef=nameは,以下のシェルの構文を使用した連 続したオプションと等価です.
--old-group-format='#ifndef name %<#endif /* ! name */ ' \ --new-group-format='#ifdef name %>#endif /* name */ ' \ --unchanged-group-format='%=' \ --changed-group-format='#ifndef name %<#else /* name */ %>#endif /* name */ '
適切に入れ子状にするため,diffの出力を注意深く調べるべきです. 例えば,-D nameや--ifdef=nameオプションを 使用するとき,差異のある行がCのプリプロセッサの指示語の‘#ifdef’, ‘#ifndef’,‘#else’,‘#elif’,または‘#endif’を含んで いるかどうかを調べるべきで,それらはおそらく入れ子状になっているのでマッ チします.そうでない場合,手動で正しくする必要があります.望んだように本 当になっていることを確実にするため,コードの結果を注意深く調べるのは良い 考えです.入力ファイルが生成される方法に依存して,出力が二重になったもの が含まれたり,正しくないコードになったりします.
patch -D nameオプションは,ファイルとマージされ たファイルを生成する差分で処理を行なう以外,diff -D nameと同じように動作します.See patch Options.