Guide to using the “sed” command in Linux
The sed
command is an indispensable tool for anyone working with text files in Linux. It’s a stream editor, meaning it processes text line by line, making it incredibly efficient for tasks like find-and-replace, deleting lines, inserting content, and more. This Guide to using the “sed” command in Linux will walk you through the fundamental syntax and several practical examples to get you started. Mastering sed
can significantly streamline your text manipulation workflows.

sed
is a stream editor in Linux that is used to perform basic text transformations on an input stream (a file or input from a pipeline). This guide will provide examples of how to use the sed
command.
Syntax
The basic syntax of the sed
command is as follows:
$ sed [options] 'command' file
Basic Usage
Replacing text
One of the most common uses of sed
is to replace text in a file. To replace a string in a file, the following syntax is used:
$ sed 's/old-text/new-text/g' file
The s
indicates that we are using the substitution command, old-text
is the text to be replaced, new-text
is the text to replace it with, and the g
at the end indicates that all occurrences of old-text
should be replaced (without g
, only the first occurrence in each line would be replaced).
Printing specific lines
$ sed -n '3,5p' file
This will print lines 3 to 5 from the file. The -n
option tells sed
to only print the specified lines and not all lines in the file.
Advanced Usage
Using Regular Expressions
sed
supports basic regular expressions, which can be used to match and replace text based on patterns. The following example shows how to use a regular expression to replace all occurrences of a number in a file:
$ sed 's/[0-9]/X/g' file
This will replace all occurrences of numbers in the file with the letter X
.
Deleting Lines
You can use sed
to delete specific lines from a file. The following syntax will delete lines 3 to 5:
$ sed '3,5d' file
Inserting Lines
You can also insert new lines into a file using sed
. The following syntax will insert a new line after line 3:
$ sed '3aThis is a new line' file
Appending Text
You can append text to the end of a file using sed
. The following syntax will append the text This is some text
to the end of the file:
$ sed '$aThis is some text' file
Conclusion
In this guide, we covered the basic and advanced usage of the sed
command in Linux. With these examples, you should be able to perform a variety of text transformations on your files.
Alternative Solutions
While sed
is a powerful tool, there are other methods to achieve similar text manipulation tasks in Linux. Here are two alternative approaches:
1. Using awk
awk
is another powerful text processing tool in Linux. Like sed
, it processes text line by line but offers more advanced features, especially for data extraction and formatting.
Replacing Text with awk
:
awk
can easily perform text replacement. The gsub()
function within awk
allows you to replace all occurrences of a pattern within a line.
Example:
Let’s say you want to replace all instances of "apple" with "orange" in a file named fruit.txt
.
awk '{gsub(/apple/, "orange"); print}' fruit.txt
Explanation:
awk '{...}' fruit.txt
: This tellsawk
to process each line of the filefruit.txt
.gsub(/apple/, "orange")
: This is the core of the command.gsub()
isawk
‘s built-in function for global substitution./apple/
is the regular expression pattern to search for, and"orange"
is the replacement string.print
: This prints the modified line to the standard output.
Why use awk
over sed
for replacement?
awk
can be advantageous when the replacement logic is more complex or depends on other parts of the line. awk
offers more programmatic control through its scripting capabilities. For instance, you can perform conditional replacements based on the content of other fields in the line.
Modifying the File In-Place with awk
:
To modify the file directly (like sed -i
), you can use awk
with a temporary file and then rename it.
awk '{gsub(/apple/, "orange"); print > "temp.txt"}' fruit.txt && mv temp.txt fruit.txt
This command first writes the output of awk
to a temporary file named temp.txt
, and then, if the awk
command is successful (indicated by &&
), it replaces the original fruit.txt
with temp.txt
.
2. Using perl
perl
is a versatile scripting language that excels at text manipulation. It provides a wealth of built-in functions and regular expression support.
Replacing Text with perl
:
perl
offers a concise way to perform find-and-replace operations, similar to sed
.
Example:
To replace all occurrences of "old-text" with "new-text" in a file named data.txt
, you can use the following perl
command:
perl -pi -e 's/old-text/new-text/g' data.txt
Explanation:
perl
: Invokes theperl
interpreter.-p
: This option tellsperl
to process the input file line by line and print the result. It essentially creates a loop that reads each line, executes the code specified by-e
, and then prints the modified line.-i
: This option enables in-place editing of the file. The original file is modified directly. You can optionally specify a backup extension (e.g.,-i.bak
) to create a backup of the original file before the changes are made.-e 's/old-text/new-text/g'
: This is theperl
code to be executed.s/old-text/new-text/g
: This is the substitution operator, similar tosed
.old-text
is the pattern to search for,new-text
is the replacement, andg
means global (replace all occurrences on each line).
Why use perl
over sed
for text manipulation?
perl
provides more complex regular expression handling than sed
. perl
is often preferred when you need more advanced pattern matching, conditional replacements, or when you’re already familiar with the perl
language. perl
is a general-purpose language and its integration makes it a powerful option.
This Guide to using the “sed” command in Linux shows that sed
provides efficient solutions to a variety of text transformations on your files.
This Guide to using the “sed” command in Linux will help you to start.
This Guide to using the “sed” command in Linux is very useful.
In conclusion, while sed
is a powerful and widely used tool, awk
and perl
offer alternative approaches with their own strengths and advantages. Choosing the right tool depends on the specific task and your familiarity with each language.