Mastering Text Manipulation With the Sed Command

Mastering Text Manipulation With the Sed Command

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:

  1. Options: These control the output of the command.
  2. Script: This contains a list of commands to run.
  3. 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:

sed s/abc/XYZ/g ik.txt

You can also start the global replacement from the nth instance of the pattern by using /ng. For example, to replace all instances of abc with XYZ, starting from the third instance, use:

sed s/abc/XYZ/3g ik.txt

In conclusion, the sed command in Linux is a powerful stream editor that can perform a multitude of operations on text files and streams. It doesn't offer an interactive interface but rather operates on piped input or text files according to the instructions we provide. The command's syntax is relatively simple and consists of three parts: options, the script containing the Linux commands to run, and the file name.

George Whittaker is the editor of Linux Journal, and also a regular contributor. George has been writing about technology for two decades, and has been a Linux user for over 15 years. In his free time he enjoys programming, reading, and gaming.

Load Disqus comments