3 不完全な行
入力ファイルが改行以外の文字で終わる場合、その最後の行は、末尾の文字が改行ではないため不完全な行と呼ばれます。それ以外の行は完全な行と呼ばれ、改行文字で終わります。空白の差分を無視しない限り、不完全な行は完全な行と一致しません(空白やタブの間隔の差分を抑制するを参照)。
通常、不完全な行は、その後に「\」で始まる行を置くことで、出力上で完全な行と区別されます。ただし、RCS書式(RCSスクリプトを参照)は、末尾の改行や後続の行を付けずに、不完全な行をそのまま出力します。左右比較書式も通常は不完全な行をそのまま表しますが、場合によって列間の欄に「\」または「/」の記号を使います。差分を左右に並べて表示するを参照してください。if-then-elseの行書式は、「%L」で行の不完全さを保持し、「%l」では改行を捨てます。行書式を参照してください。最後に、ed書式と順方向のed出力書式(diffの出力書式を参照)では、diffは不完全な行を表せないため、改行があったものとして扱い、エラーを報告します。
たとえば、FとGが、それぞれ「f」と「g」だけを含む1文字のファイルだとします。このとき「diff F G」は次を出力します。
1c1 < f \ No newline at end of file --- > g \ No newline at end of file
(英語以外のロケールでは、実際のメッセージが異なる場合があります。)「diff -n F G」は、末尾の改行を付けずに次を出力します。
d1 1 a1 1 g
「diff -e F G」は2つのエラーを報告し、次を出力します。
1c g .