Next: , Previous: Output Formats, Up: Top


3 Incomplete Lines

When an input file ends in a non-newline character, its last line is called an incomplete line because its last character is not a newline. All other lines are called full lines and end in a newline character. Incomplete lines do not match full lines unless differences in white space are ignored (see White Space).

An incomplete line is normally distinguished on output from a full line by a following line that starts with ‘\’. However, the RCS format (see RCS) outputs the incomplete line as-is, without any trailing newline or following line. The side by side format normally represents incomplete lines as-is, but in some cases uses a ‘\’ or ‘/’ gutter marker. See Side by Side. The if-then-else line format preserves a line's incompleteness with ‘%L’, and discards the newline with ‘%l’. See Line Formats. Finally, with the ed and forward ed output formats (see Output Formats) diff cannot represent an incomplete line, so it pretends there was a newline and reports an error.

For example, suppose F and G are one-byte files that contain just ‘f’ and ‘g’, respectively. Then ‘diff F G’ outputs

     1c1
     < f
     \ No newline at end of file
     ---
     > g
     \ No newline at end of file

(The exact message may differ in non-English locales.) ‘diff -n F G’ outputs the following without a trailing newline:

     d1 1
     a1 1
     g

diff -e F G’ reports two errors and outputs the following:

     1c
     g
     .