适用于Linux新手的Linux sdiff命令示例

本文解释了sdiff上的11个有用示例 - 是一个简单的命令行实用程序,用于显示两个文件之间的差异并以交互方式合并。

在我们之前的文章中,我们已经解释了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
检查Linux中文件的区别

检查Linux中文件的区别

将所有文件视为文本文件

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.你也可以告诉sdiff使用-z选项忽略行结束处的任何空格。

$ sdiff -z du.txt cal.txt

5.此外,您可以指示sdiff忽略由于使用-E标志进行标签扩展而导致的更改。

$ sdiff -E du.txt cal.txt

在比较差异时忽略个案

6.要忽略大小写(其中sdiff将大写和小写视为相同),请使用-i选项,如图所示。

$ sdiff -i du.txt cal.txt

在比较差异时忽略空行

7. -B选项有助于忽略文件中的空白行。

$ sdiff -B du.txt cal.txt

定义要输出的列数

8.通过使用-w开关, sdiff允许您设置要打印的列数(默认值为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命令行工具示例。 如果您有任何问题,请使用下面的评论表单与我们联系。


分享按钮