DEV Community

Alexand
Alexand

Posted on

Understanding the `sed` Command in Linux: A Guide with Examples

The sed command in Linux is a powerful text-processing tool, often described as a "stream editor." It allows users to search, find, replace, insert, or delete text in files or streams. While it may seem complex at first, sed is an essential tool for automating tasks and handling large amounts of data efficiently. In this article, we’ll explore the basics of sed and include plenty of examples to help you get started.


What is sed?

sed, short for stream editor, reads text from standard input or a file, performs text transformations, and outputs the result. Unlike traditional text editors, sed operates non-interactively, meaning it processes text in a stream, making it ideal for scripting and automating repetitive tasks.


How to Use sed

The basic syntax of the sed command is as follows:

sed [options] 'script' file
Enter fullscreen mode Exit fullscreen mode
  • [options]: Flags to modify sed behavior (e.g., -i for in-place editing).
  • 'script': Instructions for processing text (e.g., substitution, deletion).
  • file: Input file (optional; sed can also read from standard input).

Common Use Cases and Examples

1. Substituting Text

The s command is used for substitution. To replace all occurrences of "foo" with "bar":

sed 's/foo/bar/' input.txt
Enter fullscreen mode Exit fullscreen mode
  • Example Output: If input.txt contains "foo is great", the result will be "bar is great".

To replace text globally (all occurrences in a line), use the g flag:

sed 's/foo/bar/g' input.txt
Enter fullscreen mode Exit fullscreen mode

2. In-Place Editing

Edit a file directly without creating a new file using the -i flag:

sed -i 's/foo/bar/g' input.txt
Enter fullscreen mode Exit fullscreen mode

This replaces "foo" with "bar" across all lines of input.txt.

3. Deleting Lines

To delete specific lines, use the d command:

sed '2d' input.txt
Enter fullscreen mode Exit fullscreen mode
  • Example Output: This deletes the second line of input.txt.

To delete all blank lines:

sed '/^$/d' input.txt
Enter fullscreen mode Exit fullscreen mode

4. Printing Specific Lines

Print only specific lines using the p command:

sed -n '3p' input.txt
Enter fullscreen mode Exit fullscreen mode
  • Example Output: This displays only the third line of input.txt.

5. Inserting or Appending Text

To insert text before a specific line, use the i command:

sed '2i\Inserted line' input.txt
Enter fullscreen mode Exit fullscreen mode

This adds "Inserted line" before the second line.

To append text after a specific line, use the a command:

sed '2a\Appended line' input.txt
Enter fullscreen mode Exit fullscreen mode

6. Replacing Text on Matching Lines

Replace text only on lines that match a pattern:

sed '/pattern/s/foo/bar/' input.txt
Enter fullscreen mode Exit fullscreen mode
  • Example: Replace "foo" with "bar" only in lines containing "pattern".

7. Working with Ranges

To apply commands to a range of lines:

sed '2,4d' input.txt
Enter fullscreen mode Exit fullscreen mode

This deletes lines 2 through 4 in input.txt.

Or, you can match based on patterns:

sed '/start/,/end/d' input.txt
Enter fullscreen mode Exit fullscreen mode

This deletes all lines between "start" and "end" (inclusive).


Combining Multiple Commands

You can chain multiple commands using a semicolon:

sed 's/foo/bar/; 2d' input.txt
Enter fullscreen mode Exit fullscreen mode

This replaces "foo" with "bar" and deletes the second line.

Alternatively, you can use the -e flag:

sed -e 's/foo/bar/' -e '2d' input.txt
Enter fullscreen mode Exit fullscreen mode

Why Use sed?

sed shines when handling repetitive tasks, processing large files, or automating text manipulation in scripts. Whether you’re a system administrator, developer, or data analyst, sed can save you time and effort.


Conclusion

The sed command is a versatile tool in the Linux world. Its ability to manipulate text efficiently makes it invaluable for anyone working with Linux. Start simple, experiment with the examples above, and soon you’ll be wielding sed like a pro.

Top comments (0)