Linux常用命令-sdiff

命令

sdiff

描述

side-by-side merge of file differences
并列显示两个文件差异

用法

1
sdiff [OPTION]... FILE1 FILE2

选项

1
2
3
4
5
6
7
8
9
10
11
12
13
Options:
-i 忽略大小写
-Z 忽略行尾空格
-b 忽略连续的空格
-W 忽略所有的空格,该选项可能会合并多个字符或单词之间的空格,慎用
-B 忽略空行
-I RE 忽略匹配正则表达式的行
-a 以文本模式比较文件
-w 指定宽度,默认为130
-l 相同的行只在左侧显示
-s 不显示相同的行
-t 将tab转换为空格
--tabsize=NUM 指定tab转换为几个空格,默认为8

注意

sdiff命令只能比较两个文件

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
$ echo abc > a
$ echo Abc > b
# 有差异的行中间会用竖线|标记
$ sdiff a b
abc | Abc
# -i忽略大小写
$ sdiff -i a b
abc Abc
$ echo a >> a
$ echo "a " >> b
# -Z忽略行尾的空格
$ sdiff -Z a b
abc | Abc
a a
$ echo "a a" >> a
$ echo "a a" >> b
$ echo " aa" >> a
$ echo " aa" >> b
# -b忽略连续的空格
$ sdiff -b a b
abc | Abc
a a
a a a a
aa aa
aaa | a a a
$ echo "aaa" >> a
$ echo "a a a" >> b
# -W忽略所有的空格,如下所示"aaa=a a a",精确匹配时慎用该选项
$ sdiff -W a b
abc | Abc
a a
a a a a
aa aa
aaa a a a
# -w指定行宽
$ sdiff -w30 a b
abc | Abc
a | a
a a | a a
aa | aa
aaa | a a a
$ echo bb >>a
$ echo bb >>b
# -l相同的行只在左侧显示
$ sdiff -w30 -l a b
abc | Abc
a | a
a a | a a
aa | aa
aaa | a a a
bb (
# -s不显示相同的行
$ sdiff -w30 -s a b
abc | Abc
a | a
a a | a a
aa | aa
aaa | a a a

# 忽略大小写,忽略连续的空格,右侧只显示不同的行
$ sdiff -ibl a b
abc (
a (
a a (
aa (
aaa | a a a
bb (
# 忽略大小写,忽略连续的空格,只显示不同的行
$ sdiff -ibs a b
aaa | a a a