面向 Linux 新手的 Linux sdiff 命令示例
在我们之前的一篇文章中,我们解释了 Linux 系统的 9 个最佳文件比较和差异 (Diff) 工具。我们列出了命令行和 GUI 工具的组合,用于比较和查找文件之间的差异,每个工具都具有某些显着的功能。 Linux 的另一个有用的 diff 实用程序称为 sdiff。
另请阅读:如何使用 Diff 和 Meld 工具查找两个目录之间的差异
sdiff 是一个简单的命令行实用程序,用于显示两个文件之间的差异并以交互方式合并。它易于使用,并具有简单的使用选项,如下所述。
使用sdiff的语法如下。
sdiff option... file1 file2
在 Linux 中显示两个文件之间的差异
1.运行sdiff的最简单方法是提供您要比较的两个文件名。它将并排显示合并后的差异,如以下屏幕截图所示。
cal >cal.txt
df -h >du.txt
sdiff du.txt cal.txt
将所有文件视为文本文件
2. 要将所有文件视为文本并逐行比较它们,无论它们是否是文本文件,请使用 -a
标志。
sdiff -a du.txt cal.txt
Filesystem Size Used Avail Use% Mounted on | April 2018
udev 3.9G 0 3.9G 0% /dev | Su Mo Tu We Th Fr Sa
tmpfs 788M 9.7M 779M 2% /run | 1 2 3 4 5 6 7
/dev/sda10 324G 265G 43G 87% / | 8 9 10 11 12 13 14
tmpfs 3.9G 274M 3.6G 7% /dev/shm | 15 16 17 18 19 20 21
tmpfs 5.0M 4.0K 5.0M 1% /run/lock | 22 23 24 25 26 27 28
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup | 29 30
/dev/loop2 82M 82M 0 100% /snap/core/4206 |
/dev/loop4 181M 181M 0 100% /snap/vlc/190 <
/dev/loop1 87M 87M 0 100% /snap/core/4407 <
/dev/loop0 189M 189M 0 100% /snap/vlc/158 <
/dev/loop3 83M 83M 0 100% /snap/core/4327 <
cgmfs 100K 0 100K 0% /run/cgmanager/fs <
tmpfs 788M 40K 788M 1% /run/user/1000 <
忽略制表符和空白
3. 如果您的文件包含太多空格,您可以告诉 sdiff 在使用 -W
开关进行比较时忽略所有空格。
sdiff -W du.txt cal.txt
4. 您还可以使用 -z
选项告诉 sdiff 忽略行尾的任何空格。
sdiff -z du.txt cal.txt
5. 此外,您可以使用 -E
标志指示 sdiff 忽略由于制表符扩展而引起的更改。
sdiff -E du.txt cal.txt
比较差异时忽略大小写
6. 要忽略大小写(其中 sdiff 将大小写视为相同),请使用 -i
选项,如图所示。
sdiff -i du.txt cal.txt
比较差异时忽略空行
7. -B
选项有助于忽略文件中的空白行。
sdiff -B du.txt cal.txt
定义要输出的列数
8. sdiff 允许您通过使用 -w< 设置要打印的列数(默认为 130)
切换如下。
sdiff -w 150 du.txt cal.txt
将制表符展开为空格
9. 要将输出中的制表符扩展到空格,请使用 -t
选项。
sdiff -t du.txt cal.txt
交互式运行 sdiff
10. -o
标志使其能够以交互方式运行并将输出发送到文件。在此命令中,输出将发送到sdiff.txt文件,看到%
符号后按Enter,即可获得交互式菜单。
sdiff du.txt cal.txt -o sdiff.txt
Filesystem Size Used Avail Use% Mounted on | April 2018
udev 3.9G 0 3.9G 0% /dev | Su Mo Tu We Th Fr Sa
tmpfs 788M 9.7M 779M 2% /run | 1 2 3 4 5 6 7
/dev/sda10 324G 265G 43G 87% / | 8 9 10 11 12 13 14
tmpfs 3.9G 274M 3.6G 7% /dev/shm | 15 16 17 18 19 20 21
tmpfs 5.0M 4.0K 5.0M 1% /run/lock | 22 23 24 25 26 27 28
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup | 29 30
/dev/loop2 82M 82M 0 100% /snap/core/4206 |
/dev/loop4 181M 181M 0 100% /snap/vlc/190 <
/dev/loop1 87M 87M 0 100% /snap/core/4407 <
/dev/loop0 189M 189M 0 100% /snap/vlc/158 <
/dev/loop3 83M 83M 0 100% /snap/core/4327 <
cgmfs 100K 0 100K 0% /run/cgmanager/fs <
tmpfs 788M 40K 788M 1% /run/user/1000 <
%
ed: Edit then use both versions, each decorated with a header.
eb: Edit then use both versions.
el or e1: Edit then use the left version.
er or e2: Edit then use the right version.
e: Discard both versions then edit a new one.
l or 1: Use the left version.
r or 2: Use the right version.
s: Silently include common lines.
v: Verbosely include common lines.
q: Quit.
%
请注意,在这种情况下,您需要先在系统上安装一些编辑器,例如 ed,然后才能使用它们。
调用另一个程序来比较文件
11. --diff-program
开关允许您调用除 sdiff 本身之外的另一个命令行工具来比较文件,例如,您可以调用 diff 程序,如图所示。
sdiff --diff-program=diff du.txt cal.txt
有关更多信息,请参阅 sdiff 手册页。
man sdiff
在本文中,我们研究了适合初学者的 sdiff 命令行工具示例。如果您有任何疑问,请使用下面的评论表联系我们。