The Linux command line interface provides a wealth of tools for text processing, and one of the most powerful among them is the sed command. Sed, an abbreviation for Stream EDitor, is a versatile tool that allows for complex manipulation of text files and streams​​.
What is Sed?
Sed is a non-interactive text editor that operates on piped input or text files. By providing it with instructions, you can make it modify and process text in files or streams. The most common use cases of sed include operations like selecting text, substituting text, modifying an original file, adding lines to text, or deleting lines from the text. It can be used from the command line in Bash and other command-line shells​.
Sed Command Syntax
The syntax of the sed command comprises three main parts:
- Options: These control the output of the command.
- Script: This contains a list of commands to run.
- Input file: This is the file you’re using the sed command on.
In the absence of a filename, the script operates on the standard input data. You can also run the sed command without any options. The basic syntax looks like this:
sed OPTIONS [SCRIPT] [INPUTFILENAME]
​​
Sed Vs. Awk
Sed isn’t the only text processing tool in the Linux ecosystem. Another powerful utility is awk. While both of them work with text, they have some key differences:
- Sed excels at parsing and transforming text in a compact and simple language, making it simple and limited but easy to use.
- Awk, on the other hand, is a tool for text processing and writing potent programs in the form of statements. It’s complex, versatile, and more powerful than sed, but also more complicated to use​​.
Exploring Sed with Examples
Let’s dive deeper into the workings of sed with some practical examples. For all these examples, assume that we have a file called ik.txt
. Note that sed does not alter the original file by default. All changes will appear in the output, but the original file will remain unmodified.
Substituting Text
One of the most common operations in sed is text substitution. This is done using the s
command. For example, to replace the first instance of a pattern abc
with another pattern def
, use:
sed s/abc/def/ ik.txt
Here, only the first instance of abc
in each line is substituted with def
. If you want to replace the third instance of a pattern, you can use:
sed s/abc/z/3 ik.txt
Global Substitutions
In a global substitution, all instances of a pattern are replaced. This is achieved by appending g
to the substitute command. To replace all instances of abc
with XYZ
, use: