Sed Command in Linux/Unix with examples
SED command in UNIX is
stands for stream editor and it can perform lot’s of function on file like,
searching, find and replace, insertion or deletion. Though most common use of
SED command in UNIX is for substitution or for find and replace. By using SED
you can edit files even without opening it, which is much quicker way to find
and replace something in file, than first opening that file in VI Editor and
then changing it.
o
SED
is a powerful text stream editor. Can do insertion, deletion, search and
replace(substitution).
o
SED
command in unix supports regular expression which allows it perform complex
pattern matching.
Syntax:
sed OPTIONS... [SCRIPT] [INPUTFILE...]
Example:
Consider the below text file as an input.
Consider the below text file as an input.
$cat > geekfile.txt
unix is great os. unix is opensource.
unix is free os.
learn operating system.
unixlinux which one you choose.
unix is easy to learn.unix is a
multiuser os.Learnunix .unix is a powerful.
Sample Commands
o
Replacing or substituting
string : Sed
command is mostly used to replace the text in a file. The below simple sed
command replaces the word “unix” with “linux” in the file.
o $sed 's/unix/linux/'
geekfile.txt
Output :
linux is great os. unix is
opensource. unix is free os.
learn operating system.
linuxlinux which one you choose.
linux is easy to learn.unix is a
multiuser os.Learnunix .unix is a powerful.
Here the “s” specifies
the substitution operation. The “/” are delimiters. The “unix” is the search
pattern and the “linux” is the replacement string.
By default, the sed
command replaces the first occurrence of the pattern in each line and it won’t
replace the second, third…occurrence in the line.
o
Replacing the nth occurrence of
a pattern in a line : Use
the /1, /2 etc flags to replace the first, second occurrence of a pattern in a
line. The below command replaces the second occurrence of the word “unix” with
“linux” in a line.
o $sed 's/unix/linux/2'
geekfile.txt
Output:
unix is great os. linux is
opensource. unix is free os.
learn operating system.
unixlinux which one you choose.
unix is easy to learn.linux is a
multiuser os.Learnunix .unix is a powerful.
o
Replacing all the occurrence of
the pattern in a line : The
substitute flag /g (global replacement) specifies the sed command to replace
all the occurrences of the string in the line.
o $sed 's/unix/linux/g'
geekfile.txt
Output :
linux is great os. linux is
opensource. linux is free os.
learn operating system.
linuxlinux which one you choose.
linux is easy to learn.linux is a
multiuser os.Learnlinux .linux is a powerful.
o
Replacing from nth occurrence
to all occurrences in a line : Use
the combination of /1, /2 etc and /g to replace all the patterns from the nth
occurrence of a pattern in a line. The following sed command replaces the
third, fourth, fifth… “unix” word with “linux” word in a line.
o $sed 's/unix/linux/3g'
geekfile.txt
Output:
unix is great os. unix is opensource.
linux is free os.
learn operating system.
unixlinux which one you choose.
unix is easy to learn.unix is a
multiuser os.Learnlinux .linux is a powerful.
o
Parenthesize first character of
each word : This
sed example prints the first character of every word in paranthesis.
o $ echo "Welcome To The
Geek Stuff" | sed 's/\(\b[A-Z]\)/\(\1\)/g'
Output:
(W)elcome (T)o (T)he (G)eek (S)tuff
o
Replacing string on a specific
line number : You
can restrict the sed command to replace the string on a specific line number.
An example is
o $sed '3 s/unix/linux/'
geekfile.txt
Output:
unix is great os. unix is opensource.
unix is free os.
learn operating system.
linuxlinux which one you choose.
unix is easy to learn.unix is a
multiuser os.Learnunix .unix is a powerful.
The above sed command
replaces the string only on the third line.
o
Duplicating the replaced line
with /p flag : The
/p print flag prints the replaced line twice on the terminal. If a line does
not have the search pattern and is not replaced, then the /p prints that line
only once.
o $sed 's/unix/linux/p'
geekfile.txt
Output:
linux is great os. unix is
opensource. unix is free os.
linux is great os. unix is
opensource. unix is free os.
learn operating system.
linuxlinux which one you choose.
linuxlinux which one you choose.
linux is easy to learn.unix is a
multiuser os.Learnunix .unix is a powerful.
linux is easy to learn.unix is a
multiuser os.Learnunix .unix is a powerful.
o
Printing only the replaced
lines : Use
the -n option along with the /p print flag to display only the replaced lines.
Here the -n option suppresses the duplicate rows generated by the /p flag and
prints the replaced lines only one time.
o $sed -n 's/unix/linux/p'
geekfile.txt
Output:
linux is great os. unix is
opensource. unix is free os.
linuxlinux which one you choose.
linux is easy to learn.unix is a
multiuser os.Learnunix .unix is a powerful.
If you use -n alone
without /p, then the sed does not print anything.
o
Replacing string on a range of
lines : You
can specify a range of line numbers to the sed command for replacing a string.
o $sed '1,3 s/unix/linux/'
geekfile.txt
Output:
linux is great os. unix is
opensource. unix is free os.
learn operating system.
linuxlinux which one you choose.
unix is easy to learn.unix is a
multiuser os.Learnunix .unix is a powerful.
Here the sed command
replaces the lines with range from 1 to 3. Another example is
$sed '2,$ s/unix/linux/' geekfile.txt
Output:
unix is great os. unix is opensource.
unix is free os.
learn operating system.
linuxlinux which one you choose.
linux is easy to learn.unix is a
multiuser os.Learnunix .unix is a powerful
Here $ indicates the
last line in the file. So the sed command replaces the text from second line to
last line in the file.
o
Deleting lines from a
particular file : SED
command can also be used for deleting lines from a particular file. SED command
is used for performing deletion operation without even opening the file
Examples:
1. To Delete a particular line say n in this example
Examples:
1. To Delete a particular line say n in this example
o Syntax:
o $ sed 'nd' filename.txt
o Example:
o $ sed '5d' filename.txt
2. To Delete a last
line
Syntax:
$ sed '$d' filename.txt
3. To Delete line from
range x to y
Syntax:
$ sed 'x,yd' filename.txt
Example:
$ sed '3,6d' filename.txt
5. To Delete from nth
to last line
Syntax:
$ sed 'nth,$d' filename.txt
Example:
$ sed '12,$d' filename.txt
6. To Delete pattern
matching line
Syntax:
$ sed '/pattern/d' filename.txt
Example:
$ sed '/abc/d' filename.txt
Comments
Post a Comment