10 ví dụ lệnh sdiff trên Centos / Ubuntu / Debian / Fedora

Lệnh sdiff là một tiện ích dòng lệnh đơn giản hiển thị sự khác biệt giữa hai tập tin và hợp nhất một cách tương tác. Nó dễ sử dụng và đi kèm với các tùy chọn đơn giản, bạn sẽ hiểu rõ hơn qua 10 ví dụ cụ thể dưới đây.

Cú pháp sử dụng sdiff:

$ sdiff option... file1 file2

Lệnh sdiff hiển thị sự khác biệt giữa hai tập tin

Cách đơn giản nhất để chạy sdiff là cung cấp hai tên tập tin bạn đang muốn so sánh. Nó sẽ hiển thị sự khác biệt đã được hợp nhất song song như được hiển thị trong ảnh chụp màn hình sau. 

$ cal >cal.txt
$ df -h >du.txt
$ sdiff du.txt cal.txt

Kiểm tra sự khác biệt giữa các tệp trong Linux

Xử lý tất cả các tập tin như là tập tin văn bản

2.1 Để xem xét tất cả các tập tin như là văn bản và so sánh chúng theo từng dòng, dù chúng có phải là tập tin văn bản hay không, hãy sử dụng cờ -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       <

Bỏ qua các tab và khoảng trắng

3.1 Nếu bạn có các tập tin với quá nhiều khoảng trắng, bạn có thể cho sdiff biết để bỏ qua tất cả các khoảng trắng trong quá trình so sánh bằng cách sử dụng công tắc -W. 

$ sdiff -W du.txt cal.txt

3.2. Bạn cũng có thể cho sdiff biết để bỏ qua bất kỳ khoảng trắng nào ở cuối dòng bằng cách sử dụng tùy chọn -z. 

$ sdiff -z du.txt cal.txt

3.3. Ngoài ra, bạn có thể chỉ thị cho sdiff bỏ qua các thay đổi do mở rộng tab bằng cách sử dụng cờ -E. 

$ sdiff -E du.txt cal.txt

Bỏ qua sự khác biệt trong việc so sánh không phân biệt hoa thường

Để bỏ qua phân biệt chữ hoa chữ thường (trong đó sdiff xem xét việc chữ hoa và chữ thường như nhau), sử dụng tùy chọn -i như được hiển thị.

$ sdiff -i du.txt cal.txt

Bỏ qua các dòng trống trong quá trình so sánh khác biệt

Tùy chọn -B giúp bỏ qua các dòng trống trong tập tin. 

$ sdiff -B du.txt cal.txt

Định nghĩa số cột xuất ra

sdiff cho phép bạn đặt số cột được in ra (mặc định là 130) bằng cách sử dụng công tắc -w như sau. 

$ sdiff -w 150 du.txt cal.txt

Mở rộng tab thành dấu cách

Để mở rộng tab thành dấu cách trong đầu ra, sử dụng tùy chọn -t. 

$ sdiff -t du.txt cal.txt

Chạy sdiff theo cách tương tác

Tùy chọn -o cho phép chạy sdiff theo cách tương tác hơn và gửi đầu ra vào một tập tin. Trong lệnh này, đầu ra sẽ được gửi vào tập tin sdiff.txt, nhấn Enter sau khi thấy ký tự % để mở menu tương tác.

$ 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.
%

Lưu ý rằng bạn cần cài đặt một số trình soạn thảo như ed trên hệ thống của bạn trước khi sử dụng chúng trong trường hợp này.

Gọi một chương trình khác để so sánh tập tin

Công tắc --diff-program cho phép bạn gọi một công cụ dòng lệnh khác, không phải sdiff, để so sánh tập tin. Ví dụ, bạn có thể gọi chương trình diff như được hiển thị. 

$ sdiff --diff-program=diff du.txt cal.txt

Để biết thêm thông tin, xem trang man của sdiff.

$ man sdiff