Linux sdiff Command Examples


As Linux users, We have found the "sdiff" command to be a very useful utility for comparing and merging two files interactively. It provides a side-by-side comparison of the files with the differences highlighted, making it easy to identify where the files differ and what changes need to be made by us.

In this article, We will walk you through various examples of how to use the "sdiff" command to compare and merge files in Linux. We will cover basic usage, options, and scenarios where the sdiff order can be constructive. Whether you are a seasoned Linux user or just starting out, this guide will help you become familiar with this useful command and make the most of it in your work.

Syntax 

The syntax for the “sdiff” command in Linux.

sdiff [options] file1 file2

We can see "file1" and "file2" are the names of the two files that you want to compare and merge.

Difference Between the Two Files in Linux

If we want to compare and merge two files in Linux, one way to do so is by using the sdiff command. To use it, we simply need to write the names of the two files as arguments to the command. The output will show the merged difference between the two files side-by-side.

Input

sdiff file1.txt file2.txt

Output

This is some text in file1.    | This is some text in file2.
It has a few lines.            | It also has a few lines.
These lines are the same.      | These lines are slightly different.
This is the end of file1.      < This is the end of file2.

Treat all Files as Text Files

The "-a" flag with sdiff allows treating all files as text and comparing them line-by-line and side-by-side, ignoring any non-text characters. This can be useful when comparing files that may not be in a standard text format.

Input

$ sdiff -a file1.txt file2.txt

Output

Hello world                             | Hello there

Ignore Tabs and White Space

When we have files with excessive whitespace, we can direct sdiff to disregard all whitespace while comparing them by using the “-W” command.

Input

sdiff -W file1.txt file2.txt

Output

This is a line with extra spaces.   | This is a line with extra spaces.
This line is spaced out.            | This line is spaced     out.  

Using the "-z" option with sdiff can ignore trailing white spaces at the end of each line while comparing files, preventing false differences from being flagged and helping to focus only on the actual content of each line.

Input

$ sdiff -z file1.txt file2.txt

Output

file1.txt                 |  file2.txt
--------------------------|--------------------------
This is line 1.           |  This is line 1.
This is line 2.           |  This is line 2.
This is line 3.           |  This is a different line 3.^M\0
This is line 4.           |  This is line 4.

The "-E" flag in sdiff can ignore differences due to tab expansion, treating tabs as spaces, and focusing only on the actual content of each line. This is helpful when comparing files with tab-separated data.

Input

$ sdiff -E file1.txt file2.txt

Output

This is line 3.       |  This is a different line 3.

Ignore Case While Comparing Difference

The "-i" option in sdiff ignores text case while comparing, making it easier to identify actual differences between files with different capitalization styles.

Input

$ sdiff -i file1.txt file2.txt

Output

This is line 1.                  |  this is line 1.

Ignore Blank Lines While Comparing Differences

Using "-B" with sdiff ignores blank lines while comparing files, making it easier to identify actual differences between lines with content, especially when files have varying numbers of blank lines.

Input

$ sdiff -B file1.txt file2.txt

Output

This is line 1.                  |  This is line 1.
This is line 2.                  |  This is line 2.
This is line 3.                  |  This is line 3.
This is line 4.                  |  This is line 4.

Define the Number of Columns to Output

Customize the number of columns printed during file comparison with sdiff using the "-w" switch. The default is 130 columns, but we can specify a different value after the "-w" option. For example, "sdiff -w 80 file1.txt file2.txt" prints only 80 columns. This is useful when comparing files with long lines, ensuring output is formatted and easy to read.

Input

$ sdiff -w 150 file1.txt file2.txt

Output

this is line 1			this is line 1
this is line 2			this is a modified line 2
this is line 3			this is line 3
this is line 4			this is line 4
this is line 5			this is line 5
this is line 6			this is line 6
this is line 7			this is line 7
this is line 8			this is line 8
this is line 9			this is line 9
this is line 10			this is line 10
this is line 11			this is line 11
this is line 12			this is line 12
this is line 13			this is line 13
this is line 14			this is line 14
this is line 15			this is line 15
this is line 16			this is line 16
this is line 17			this is line 17
this is line 18			this is line 18
this is line 19			this is line 19
this is line 20			this is line 20

Expand Tabs to Spaces

The "-t" option in sdiff can replace tabs with spaces in the output, providing a more accurate representation of differences between files. This can be useful when the number of spaces between files is important. Use the command "sdiff -t file1.txt file2.txt" to convert all tabs in the files to spaces in the output.

Input

$ sdiff -t file1.txt file2.txt

Output

This line contains \t a tab. | This line contains       a tab.
This is line 2.              | This is line 2.
This line has a \t tab.      | This line has a             tab.
This line has no tab.        | This line has no tab.

Run Sdiff Interactively

The "-o" flag with sdiff allows us to save the output of the command to a file. For example, "sdiff -o sdiff.txt file1.txt file2.txt" will send the output to a file called "sdiff.txt". Using this flag, we can run sdiff interactively and quickly identify differences between the two files using the menu that appears after pressing Enter. This can be particularly useful for complex comparisons, where discrepancies may be difficult to spot.

Input

$ sdiff file1.txt file2.txt -o sdiff.txt

Output

This is the first line of file1. | This is the first line of file2.
This is the third line of file1. <
                               > This is a new line in file2.                     

Invoke Another Program To Compare Files

The "--diff-program" switch allows me to use a different command-line tool to compare files instead of sdiff. This gives more flexibility and let's choose a tool better suited for use cases, such as "meld" for large files. It expands the capabilities of file comparison beyond what sdiff can offer.

Input

$ sdiff --diff-program=diff file1.txt file2.txt

Output

1,3c1
< This is the content of file 1
< which has multiple lines
< and some text in them
---
> This is the content of file 2
4,6c2
< and some more text in them
< which is only in file 1
< and not in file 2
---
> and some extra text in file 2

Conclusion

In conclusion, the "sdiff" command is an invaluable tool in the Linux command line toolkit, enabling users to compare two files or directories and view their differences side by side. This feature is particularly useful for identifying changes in configuration files or troubleshooting code. By mastering the sdiff command, users can quickly and accurately compare and analyze different versions of their files, helping to prevent errors and optimize system performance. Its efficiency and accuracy make it an essential tool for anyone working with Linux.

Updated on: 28-Jul-2023

180 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements