sdiff 命令

用途

比较两个文件并以并排的格式显示差别。

语法

sdiff [ -l | -s ] [ -o OutFile ] [ -w Number ] File1 File2

描述

sdiff 命令读取由 File1File2 参数指定的文件,使用 diff 命令比较二者,并将结果以并排格式写到标准输出。 如果行相同,那么 sdiff 命令就会显示两个文件的每一行,其间有一系列的空格。 如果该行只存在于参数指定的文件中,则在空格区域显示 <(小于号);如果该行只存在于参数指定的文件中,则在空格区域显示 >(大于号)。 File1 如果该行只存在于参数指定的文件中,则在空格区域显示 >(大于号)。 File2 如果行只存在于参数指定的文件中,则显示 >(大于号);如果行不同,则显示 |(竖杠)。

当指定 -o 标志时, sdiff 命令合并 File1File2 参数指定的文件并生成第三个文件。

注:sdiff 命令会调用 diff -b 命令来比较两个输入文件。 -b 标志会引起 diff 命令忽略尾随空格和制表符,并将其他空格字符串视为相同的字符串。

标志

描述
-l 当行相同时只显示左侧内容。
-o OutFile 通过将 File1File2 参数指定的两个文件在受控下逐行合并,来创建 OutFile 变量指定的第三个文件。 以下子命令管理该文件的创建:
e
以空文件开始 ed 命令。
e be |
从两侧开始 ed 命令。
埃勒e <
从左侧开始 ed 命令。
e re>
从右侧开始 ed 命令。
L
将左侧添加到输出文件。
R
将右侧添加到输出文件。
停止显示相同的行。
v
开始显示相同的行。
q
执行以下功能之一:
  • 退出 ed 命令。
  • 如果没有运行 ed 命令,那么退出 sdiff 命令。
  • 退出两条命令。 不再有合并至输出文件的行时,执行该操作。

每次退出 ed 命令时,sdiff 命令将作为结果的已编辑文件写入 OutFile 变量指定的文件结尾。 如果您在退出之前没有保存更改(例如,按下 Ctrl-C 按键顺序),那么 sdiff 命令将初始的输入写入输出文件中。

-s 不显示相同的行。
-w 数字 设置输出行的宽度。 Number 变量的缺省值为 130 个字符。 Number 变量的最大宽度是 2048。 Number 变量的最小宽度是 20。 如果指定的值大于 2048,那么 sdiff 命令使用 2048。

退出状态

sdiff 命令返回下列退出值:
表 1. 退出状态
描述
1 成功完成。
2 发生错误。

示例

  1. 要打印两个文件的比较,请输入:
    sdiff chap1.bak chap1 
    sdiff 命令显示一个并排列表,用于比较chap1.bakchap1格式的文件。
  2. 要仅显示不同行,请输入:
    sdiff  -s  -w 80 chap1.bak chap1
    sdiff 命令在工作站上显示差别。 该-w 80标志和变量将页面宽度设置为 80 列。 该-s标志指示不会显示两个文件中相同的行。
  3. 要选择性地组合两个文件的部分,请输入:
    sdiff  -s  -w 80  -o chap1.combo chap1.bak chap1
    sdiff 命令将chap1.bakchap1将文件放入新文件中,称为chap1.combo. 对于每组不同的行, sdiff 命令提示您保留哪个组或您是否要使用 ed 命令对它们进行编辑。
  4. 要组合和编辑两个文件,staff.janstaff.apr,并将结果写入staff.year文件,执行指示的步骤。

    staff.jan文件包含以下行:

    Members of the Accounting Department
    Andrea
    George
    Karen
    Sam
    Thomas
    staff.apr文件包含以下行:
    Members of the Accounting Department
    Andrea
    Fred
    Mark
    Sam
    Wendy
    1. 输入以下命令:
      sdiff -o staff.year staff.jan staff.apr
      sdiff 命令将开始比较staff.janstaff.apr文件并将结果写入staff.year中。 sdiff 命令显示以下内容:
      Members of the Accounting Dept   Members of the Accounting Dept
      Andrea                            Andrea
      George                          | Fred
      %
      %(百分号)是命令提示符。
    2. 输入 e b 子命令以开始使用 ed 命令编辑输出文件。

      sdiff 命令显示数字序列,它表示合并的行的字节数。 在这种情况下,字节计数为23.

    3. 输入 q 子命令以退出 ed 命令并继续组合和编辑这两个文件。 sdiff 命令显示以下内容:
      Sam                              Sam
      Thomas                          | Wendy
        
    4. 再次输入 e b 子命令。 每当两个原始文件的一组行合并成输出文件时,必须运行 ed 命令。 此实例中的字节计数为13.
    5. 输入 q 子命令以保存更改。 当将两个文件的所有行都合并成输出文件时,q 子命令退出 edsdiff 命令。
    staff.year文件现在包含以下内容:
    Members of the Accounting Department
    Andrea
    George
    Karen
    Fred
    Mark
    Sam
    Thomas
    Wendy

文件数

描述
/usr/bin/sdiff 包含 sdiff 命令。