上一个: Line group formats, 上层: diff options
行格式控制着如何将输入文件中的每一行输出为 if-then-else 格式的行组的一部分。
例如,下面的命令输出的文本在左侧有一个单列更改指示。第一列输出为 `-' 代表 删除的行,`|' 代表添加的行,空格是未修改的行。格式中包含换行字符是因为需要 输出换行。
cvs diff \ --old-line-format='-%l ' \ --new-line-format='|%l ' \ --unchanged-line-format=' %l ' \ myfile
指定行格式,要使用下面的选项。你应该引注 format,这是因为通常包含 shell 字符。
在行格式里面,普通字符代表它们自己; 以 `%' 开始转换规格有下面的形式。
printf
的转换规格,代表 F 格式化的行号。例如,
`%.5dn' 使用 printf
的 "%.5d"
格式打印行号。
参阅 Line group formats, 了解更多 printf 的转换格式。
默认的行格式是 `%l' 和一个换行符。
如果输入包含制表符,并且重要的是在输出里面排列行,你应确保行格式里面的 `%l' 或 `%L' 紧跟在制表符后面(如,在 `%l' 或 `%L' 前有制表符), 或者使用 `-t' 或 `--expand-tabs' 选项。
总之,行格式与行组格式让你指定不同的格式,例如,下面命令使用类似 diff
的普通格式。你可以修剪这个命令用于控制 diff
的输出。
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