A.10.1.2 Line formats
Line formats control how each line taken from an input file is
output as part of a line group in if-then-else format.
For example, the following command outputs text with a one-column
change indicator to the left of the text. The first column of output
is `-' for deleted lines, `|' for added lines, and a space
for unchanged lines. The formats contain newline characters where
newlines are desired on output.
| cvs diff \
--old-line-format='-%l
' \
--new-line-format='|%l
' \
--unchanged-line-format=' %l
' \
myfile
|
To specify a line format, use one of the following options. You should
quote format, since it often contains shell metacharacters.
- `--old-line-format=format'
formats lines just from the first file.
- `--new-line-format=format'
formats lines just from the second file.
- `--unchanged-line-format=format'
formats lines common to both files.
- `--line-format=format'
formats all lines; in effect, it sets all three above options simultaneously.
In a line format, ordinary characters represent themselves;
conversion specifications start with `%' and have one of the
following forms.
- `%l'
stands for the contents of the line, not counting its trailing
newline (if any). This format ignores whether the line is incomplete.
- `%L'
stands for the contents of the line, including its trailing newline
(if any). If a line is incomplete, this format preserves its
incompleteness.
- `%%'
stands for `%'.
- `%c'C''
where C is a single character, stands for C.
C may not be a backslash or an apostrophe.
For example, `%c':'' stands for a colon.
- `%c'\O''
where O is a string of 1, 2, or 3 octal digits,
stands for the character with octal code O.
For example, `%c'\0'' stands for a null character.
- `Fn'
where F is a printf
conversion specification,
stands for the line number formatted with F.
For example, `%.5dn' prints the line number using the
printf
format "%.5d"
. See section Line group formats, for
more about printf conversion specifications.
The default line format is `%l' followed by a newline character.
If the input contains tab characters and it is important that they line
up on output, you should ensure that `%l' or `%L' in a line
format is just after a tab stop (e.g. by preceding `%l' or
`%L' with a tab character), or you should use the `-t' or
`--expand-tabs' option.
Taken together, the line and line group formats let you specify many
different formats. For example, the following command uses a format
similar to diff
's normal format. You can tailor this command
to get fine control over diff
's output.
| cvs diff \
--old-line-format='< %l
' \
--new-line-format='> %l
' \
--old-group-format='%df%(f=l?:,%dl)d%dE
%<' \
--new-group-format='%dea%dF%(F=L?:,%dL)
%>' \
--changed-group-format='%df%(f=l?:,%dl)c%dF%(F=L?:,%dL)
%<---
%>' \
--unchanged-group-format='' \
myfile
|