1、命令简介
sdiff:查找两个文件之间的差异并进行交互合并。
2、命令语法
sdiff -o outfile [options] from-file to-file
3、命令描述
sdiff
命令合并两个文件,并以交互方式将结果输出到outfile
。
如果from-file
是目录而to-file
不是目录,sdiff
比较from-file
中文件名与to-file
文件名相同的文件,反之亦然。from-file
和to-file
不能都是目录。
sdiff
选项以-
开头,所以from-file
和to-file
通常不以-
开头。但是,--
作为参数本身将其余参数视为文件名,即使它们以-
开头。不能使用-
作为输入文件。
不带[o
(或--output
)的sdiff会产生并排的差异。这种用法已经过时了;用diff -side-by-side
代替。
4、命令选项
选项 | 描述 |
-a | 将所有文件视为文本, 即使它们看起来不是文本, 也逐行比较它们。 |
-b | 忽略空白数量的变化。 |
-B | 忽略只插入或删除空白行的变化。 |
-d | 改变算法以找到更小的一组变化。 这使得 (有时非常慢)。 |
-H | 使用启发式方法来加速处理 具有大量零星小变化的大文件。 |
--expand-tabs | 将制表符扩展为空格,以 保留输入文件中制表符的对齐方式。 |
-i | 忽略大小写的变化; 将大写和小写视为相同。 |
-I regexp | 忽略只插入或删除 与正则表达式匹配的行的变化。 |
--ignore-all-space | 比较行时忽略所有空白字符。 |
--ignore-blank-lines | 忽略只插入或删除空白行的变化。 |
--ignore-case | 忽略大小写的变化; 将大写和小写视为相同。 |
--ignore-matching-lines=regexp | 忽略只插入或删除 与正则表达式匹配的行的变化。 |
--ignore-space-change | 忽略空白数量的变化。 |
-l, --left-column | 只打印两个公共行的左列。 |
--minimal | 改变算法以找到更小的一组变化。 这使得 |
-o file, --output=file | 将合并后的输出放入文件中。 此选项在合并时是必需的。 |
-s, --suppress-common-lines | 不打印公共行。 |
--speed-large-files | 使用启发式方法来加速处理 具有大量零星小变化的大文件。 |
-t | 将制表符扩展为空格, 以保留输入文件中制表符的对齐方式。 |
--text | 将所有文件视为文本, 即使它们看起来不是文本, 也逐行比较它们。 |
-v, --version | 输出 |
-w columns, --width=columns | 使用 columns 指定的输出宽度。 请注意,由于历史原因, 此选项在 而在 |
-W | 比较行时忽略水平空白字符。 请注意,由于历史原因, 此选项在 而在 |
5、使用示例
1)将所有文件视为文本,并逐行比较
sdiff -a file1.txt file2.txt
2)忽略空白数量的变化
sdiff -b file1.txt file2.txt
3)忽略只插入或删除空白行的变化
sdiff -B file1.txt file2.txt
4)使用启发式方法加速处理大文件
sdiff -H file1.txt file2.txt
5) 忽略大小写的变化
sdiff -i file1.txt file2.txt
6)忽略与正则表达式匹配的行的变化
sdiff -I '^#' file1.txt file2.txt
此示例忽略所有以 # 开头的行的变化。
7)扩展制表符为空格
sdiff --expand-tabs file1.txt file2.txt
8)只打印左列的公共行
sdiff -l file1.txt file2.txt
9) 将合并后的输出放入文件中
sdiff -o merged.txt file1.txt file2.txt
在交互模式下,你可以使用 l
、r
、s
、e
等命令来选择如何合并差异。
10)使用指定宽度的输出
sdiff -w 80 file1.txt file2.txt