Linux sed Command with Practical Examples

LinuxLinuxBeginner
Practice Now

Introduction

In this lab, you will learn how to use the powerful sed (stream editor) command in Linux for text processing and editing. The lab covers the basics of the sed command, including performing text substitution, editing multiple files, and more. You will explore various sed commands and their practical applications, enabling you to efficiently manipulate and transform text data on the command line.

The lab starts by introducing the fundamentals of the sed command, demonstrating how to print the entire contents of a file, print specific lines, substitute text, delete lines, and insert or append text. Then, it delves into more advanced text substitution techniques, showing you how to perform substitutions across multiple files. Finally, the lab covers editing multiple files with sed, allowing you to streamline your text processing workflows.

Linux Commands Cheat Sheet


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("`Linux`")) -.-> linux/BasicFileOperationsGroup(["`Basic File Operations`"]) linux(("`Linux`")) -.-> linux/BasicSystemCommandsGroup(["`Basic System Commands`"]) linux(("`Linux`")) -.-> linux/TextProcessingGroup(["`Text Processing`"]) linux(("`Linux`")) -.-> linux/FileandDirectoryManagementGroup(["`File and Directory Management`"]) linux/BasicFileOperationsGroup -.-> linux/cat("`File Concatenating`") linux/BasicSystemCommandsGroup -.-> linux/echo("`Text Display`") linux/TextProcessingGroup -.-> linux/sed("`Stream Editing`") linux/FileandDirectoryManagementGroup -.-> linux/find("`File Searching`") subgraph Lab Skills linux/cat -.-> lab-422906{{"`Linux sed Command with Practical Examples`"}} linux/echo -.-> lab-422906{{"`Linux sed Command with Practical Examples`"}} linux/sed -.-> lab-422906{{"`Linux sed Command with Practical Examples`"}} linux/find -.-> lab-422906{{"`Linux sed Command with Practical Examples`"}} end

Understand the Basics of sed Command

In this step, we will learn the basics of the sed (stream editor) command in Linux. The sed command is a powerful tool for text processing and editing, allowing you to perform various operations on text files.

First, let's create a sample text file to work with:

echo "This is a sample text file." > sample.txt

Now, let's explore some basic sed commands:

Print the entire file

To print the entire contents of the file, use the following command:

sed 's/.*/' sample.txt

Example output:

This is a sample text file.

Print a specific line

To print a specific line, use the line number with the p command:

sed -n '2p' sample.txt

Example output:

This is a sample text file.

Substitute text

To substitute text, use the s command followed by the pattern and replacement:

sed 's/sample/new/' sample.txt

Example output:

This is a new text file.

Delete lines

To delete a specific line, use the d command followed by the line number:

sed '2d' sample.txt

Example output:

This is a sample text file.

Insert or append text

To insert text before a line, use the i command. To append text after a line, use the a command:

sed '2i This is an inserted line.' sample.txt
sed '2a This is an appended line.' sample.txt

Example output:

This is a sample text file.
This is an inserted line.
This is a sample text file.
This is an appended line.

These are just a few basic examples of using the sed command. In the next step, we will explore more advanced sed operations, such as performing text substitution in multiple files.

Perform Text Substitution Using sed

In this step, we will explore more advanced text substitution using the sed command.

First, let's create a new sample file with multiple occurrences of the word "old":

echo "This is an old text. Replace the old text with new text." > sample.txt

Replace all occurrences of a word

To replace all occurrences of a word, use the global g flag:

sed 's/old/new/g' sample.txt

Example output:

This is an new text. Replace the new text with new text.

Replace only the first occurrence

To replace only the first occurrence, omit the global g flag:

sed 's/old/new/' sample.txt

Example output:

This is an new text. Replace the old text with new text.

Replace on a specific line

To replace text on a specific line, use the line number before the s command:

sed '1s/old/new/' sample.txt

Example output:

This is an new text. Replace the old text with new text.

Replace using regular expressions

Sed also supports regular expressions. To replace text using a regular expression, use the \1 syntax to refer to captured groups:

sed 's/\(This.*\)old\(.*\)/\1new\2/' sample.txt

Example output:

This is an new text. Replace the new text with new text.

Replace in multiple files

To replace text in multiple files, pass the file names as arguments to the sed command:

sed 's/old/new/g' sample.txt another_file.txt

This will perform the text substitution in both sample.txt and another_file.txt.

In the next step, we will learn how to edit multiple files using the sed command.

Edit Multiple Files with sed

In this step, we will learn how to use the sed command to edit multiple files at once.

First, let's create two sample text files:

echo "This is the first file." > file1.txt
echo "This is the second file." > file2.txt

Replace text in multiple files

To replace text in multiple files, simply pass the file names as arguments to the sed command:

sed 's/first/updated/g' file1.txt file2.txt

Example output:

This is the updated file.
This is the second file.

Edit files in-place

By default, sed prints the modified output to the console. To edit the files in-place, use the -i option:

sed -i 's/second/new/g' file1.txt file2.txt

Now, the files file1.txt and file2.txt have been modified directly.

Use a backup file

If you want to keep a backup of the original files, you can use the -i option with a backup extension:

sed -i.bak 's/new/updated/g' file1.txt file2.txt

This will create backup files file1.txt.bak and file2.txt.bak containing the original content.

Edit files recursively

To edit files recursively in a directory, you can use the find command along with sed:

find . -type f -name "*.txt" -exec sed -i 's/updated/final/g' {} \;

This will replace all occurrences of "updated" with "final" in all .txt files in the current directory and its subdirectories.

With these techniques, you can efficiently edit multiple files using the sed command. This can be particularly useful when you need to perform large-scale text replacements or modifications across multiple files.

Summary

In this lab, we learned the basics of the sed command in Linux, including printing the entire file, printing specific lines, performing text substitution, deleting lines, and inserting or appending text. We also explored more advanced text substitution using sed, where we learned how to replace multiple occurrences of a word in a file, as well as how to edit multiple files simultaneously with sed.

The key takeaways from this lab are the versatility and power of the sed command for text processing and editing tasks in the Linux environment.

Linux Commands Cheat Sheet

Other Linux Tutorials you may like