
sdiff Command in Linux
The sdiff command is a powerful utility in Linux used for comparing and merging files. It is an extended version of the diff command that provides a side-by-side comparison of two files, making it easier to visualize the differences. Moreover, sdiff allows interactive merging of files, enabling users to resolve conflicts between two versions of a file.
Table of Contents
Here is a comprehensive guide to the options available with the sdiff command â
- Understanding sdiff Command
- sdiff Command Options
- How to Use sdiff Command in Linux?
- Interactive Merging of sdiff Command
- Examples of sdiff Command in Linux
- Advanced Usage of sdiff Command in Linux
Understanding sdiff Command
The basic syntax for the sdiff command is −
sdiff [options] file1 file2
The command compares file1 and file2 line by line and displays the differences side by side.
sdiff Command Options
-o or --output
This option allows you to specify an output file where the merged result will be saved. In interactive mode, you can select which lines to include in the output file.
Example −
sdiff -o mergedfile.txt file1.txt file2.txt

In this example, the differences between file1.txt and file2.txt are displayed side by side, and the interactive mode allows you to merge the files and save the result to mergedfile.txt.
-w or --width
This option specifies the width of the output in columns. By default, the width is set to 130 columns, but you can adjust it to suit your needs.
Example −
sdiff -w 160 file1.txt file2.txt

In this example, the output width is set to 160 columns, providing more space for side-by-side comparison.
-i or --ignore-case
This option ignores case differences when comparing files. This is useful if you want to compare files without considering case sensitivity.
Example −
sdiff -i file1.txt file2.txt

-B or --ignore-blank-lines
This option ignores blank lines when comparing files. It is useful when you want to focus on the content differences and ignore any blank lines.
Example −
sdiff -B file1.txt file2.txt

In this example, blank lines are ignored, and the files are compared based on their content.
-E or --ignore-tab-expansion
This option ignores differences in the amount of white space when comparing files, which is helpful when comparing files with inconsistent tab spacing.
Example −
sdiff -E file1.txt file2.txt

In this example, tab expansion differences are ignored, and the files are compared without considering white space differences.
-b or --ignore-space-change
This option ignores changes in the amount of white space when comparing files. It is useful when you want to compare files without considering differences in white space.
Example −
sdiff -b file1.txt file2.txt

In this example, space change differences are ignored, and the files are compared without considering white space changes.
-t or --expand-tabs
This option expands tabs to spaces when comparing files. It ensures that tabs are treated consistently in both files being compared.
Example −
sdiff -t file1.txt file2.txt

In this example, tabs are expanded to spaces, and the files are compared with consistent spacing.
-s or --suppress-common-lines
This option suppresses the output of lines that are common to both files. It is useful when you want to focus only on the differences between the files.
Example −
sdiff -s file1.txt file2.txt

In this example, common lines are suppressed, and only the differences between the files are displayed.
How to Use sdiff Command in Linux?
The primary use of the sdiff command is to compare two files side by side. This allows you to visualize the differences and understand how the files differ from each other.
Example −
sdiff file1.txt file2.txt

In this example, the differences between file1.txt and file2.txt are displayed side by side.
The symbols used in the output indicate the following:
- | − indicates differences between the two files.
- < − shows lines in file1 that are not in file2.
- > − shows lines in file2 that are not in file1.
Interactive Merging of sdiff Command
One of the powerful features of the sdiff command is its interactive merging mode. By using the -o option, you can merge the differences between two files and save the result to an output file.
Example −
sdiff -o mergedfile.txt file1.txt file2.txt

In this example, the differences between file1.txt and file2.txt are displayed side by side, and you can interactively choose which lines to include in the merged output file mergedfile.txt.
During interactive merging, you will be prompted with the following options:
- l − Choose the line from the left file (file1.txt).
- r − Choose the line from the right file (file2.txt).
- e − Edit the merged line manually.
- q − Quit the merging process.
Examples of sdiff Command in Linux
Let's explore some practical examples to demonstrate the use of the sdiff command in different scenarios.
- Comparing Files with Custom Width
- Ignoring Case Differences
- Suppressing Common Lines
- Interactive Merging with Custom Width
Comparing Files with Custom Width
You can customize the output width of the comparison using the -w option −
sdiff -w 160 file1.txt file2.txt

In this example, the output width is set to 160 columns, providing more space for side-by-side comparison.
Ignoring Case Differences
To compare two files while ignoring case differences, use the -i option −
sdiff -i file1.txt file2.txt

In this example, case differences are ignored, and the files are compared without considering case sensitivity.
Suppressing Common Lines
To compare two files and suppress the output of common lines, use the -s option −
sdiff -s file1.txt file2.txt

In this example, common lines are suppressed, and only the differences between the files are displayed.
Interactive Merging with Custom Width
To interactively merge two files with a custom output width, use the -w and -o options −
sdiff -w 160 -o mergedfile.txt file1.txt file2.txt
In this example, the output width is set to 160 columns, and the interactive merging mode is used to merge the differences between file1.txt and file2.txt.
Advanced Usage of sdiff Command in Linux
For advanced users, the sdiff command can be used in conjunction with other tools and scripts to automate file comparison and merging tasks.
Automating File Comparison
You can automate the process of comparing files and generating side-by-side differences using a simple shell script.
Example Script −
rootflags
#!/bin/bash # Compare two files and save the differences to a file sdiff -o differences.txt file1.txt file2.txt # Display the differences cat differences.txt
Save this script as compare_files.sh and make it executable −
chmod +x compare_files.sh
You can then run the script to automate the file comparison tasks −
./compare_files.sh
Conclusion
The sdiff command is a powerful tool for comparing and merging files in Linux. Its side-by-side display of differences makes it easier to spot changes, and its interactive merging feature enables users to manually resolve conflicts. By utilizing the various options, you can customize how files are compared, making it a versatile utility for file comparison and version control.