下一个: Line formats, 上层: diff options
行组格式让你指定格式,以适应允许 if-then-else 输入的应用程序,包括编程语言和 文本格式语言。行组格式指定输出格式是类似行连续的组。
例如,以下命令比较 TeX 文件 myfile 在仓库里面的最初版本,输出一个合并的 文件,其旧区域被 `\begin{em}'-`\end{em}' 包围,新区域被 `\begin{bf}'-`\end{bf}' 包围。
cvs diff \ --old-group-format='\begin{em} %<\end{em} ' \ --new-group-format='\begin{bf} %>\end{bf} ' \ myfile
下面命令与上面例子相同,除了显示更多的信息,因为它拼出默认的行组格式。
cvs diff \ --old-group-format='\begin{em} %<\end{em} ' \ --new-group-format='\begin{bf} %>\end{bf} ' \ --unchanged-group-format='%=' \ --changed-group-format='\begin{em} %<\end{em} \begin{bf} %>\end{bf} ' \ myfile
这里是更高级的例子,输出的比较列出包含“简单英语”类型的头。
cvs diff \ --unchanged-group-format='' \ --old-group-format='-------- %dn line%(n=1?:s) deleted at %df: %<' \ --new-group-format='-------- %dN line%(N=1?:s) added after %de: %>' \ --changed-group-format='-------- %dn line%(n=1?:s) changed at %df: %<-------- to: %>' \ myfile
要指定行组格式,使用上面列出选项中的一个。你可以最多指定四个行组格式,每种一个。 你应该引注 format,这是因为通常会包含 shell 字符。
在行组格式里面,普通字符代表它们自己; 习惯上采用 `%' 开始的字符指定规格, 如下。
printf
的转换规格,n 是后续字符,代表用 F
格式化的 n 值。
printf
转换规格可以是 `%d', `%o', `%x' 或 `%X',
分别指定十进制,八进制,小写十六进制,大写十六进制输出。在 `%' 之后的选项
可以按次序出现: `-' 指定左对齐; 整数指定区域最小宽度; 句点后面可选的整数
指定数字的最小个数。例如,`%5dN' 打印组里面新行的行号,要 5 个字符的宽度,
采用了 printf
的 "%5d"
的格式。
例如,`%(N=0?no:%dN) line%(N=1?:s)',如果 N (新文件组中行号) 是 0, 那么等于 `no lines',如果 N 是 1,则为 `1 line',其他的为 `%dN lines'。