Exp - No 8 Study of Shell Scripts and Sed: Sed OPTIONS... (SCRIPT) (INPUTFILE... )
Exp - No 8 Study of Shell Scripts and Sed: Sed OPTIONS... (SCRIPT) (INPUTFILE... )
Exp - No 8 Study of Shell Scripts and Sed: Sed OPTIONS... (SCRIPT) (INPUTFILE... )
Sample Commands
1. 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.
$sed 's/unix/linux/' exp8.txt
Output :
linux is great os. unix is opensource. unix is free os.
learn operating system.
linux linux which one you choose.
linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.
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.
Output:
unix is great os. linux is opensource. unix is free os.
learn operating system.
unix linux which one you choose.
unix is easy to learn.linux is a multiuser os.Learn unix .unix is a powerful.
3. 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.
$sed 's/unix/linux/g' exp8.txt
Output :
linux is great os. linux is opensource. linux is free os.
learn operating system.
linux linux which one you choose.
linux is easy to learn.linux is a multiuser os.Learn linux .linux is a powerful.
4. 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.
$sed 's/unix/linux/3g' exp8.txt
Output:
unix is great os. unix is opensource. linux is free os.
learn operating system.
unix linux which one you choose.
unix is easy to learn.unix is a multiuser os.Learn linux .linux is a powerful.
5. Parenthesize first character of each word : This sed example prints the first character
of every word in paranthesis.
$ echo "Welcome To The Geek Stuff" | sed 's/\(\b[A-Z]\)/\(\1\)/g'
Output:
(W)elcome (T)o (T)he (G)eek (S)tuff
6. 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
$sed '3 s/unix/linux/' exp8.txt
Output:
unix is great os. unix is opensource. unix is free os.
learn operating system.
linux linux which one you choose.
unix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.
The above sed command replaces the string only on the third line.
7. 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.
$sed 's/unix/linux/p' exp8.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.
linux linux which one you choose.
linux linux which one you choose.
linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.
linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.
8. 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.
$sed -n 's/unix/linux/p' exp8.txt
Output:
linux is great os. unix is opensource. unix is free os.
linux linux which one you choose.
linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.
If you use -n alone without /p, then the sed does not print anything.
9. Replacing string on a range of lines : You can specify a range of line numbers to the
sed command for replacing a string.
$sed '1,3 s/unix/linux/' exp8.txt
Output:
linux is great os. unix is opensource. unix is free os.
learn operating system.
linux linux which one you choose.
unix is easy to learn.unix is a multiuser os.Learn unix .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/' exp8.txt
Output:
unix is great os. unix is opensource. unix is free os.
learn operating system.
linux linux which one you choose.
linux is easy to learn.unix is a multiuser os.Learn unix .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.
10.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:
To Delete a particular line say n in this example
Syntax:
$ sed 'nd' filename.txt
Example:
$ sed '5d' filename.txt
To Delete a last line
Syntax:
$ sed '$d' filename.txt
To Delete line from range x to y
Syntax:
$ sed 'x,yd' filename.txt
Example:
$ sed '3,6d' filename.txt
To Delete from nth to last line
Syntax:
$ sed 'nth,$d' filename.txt
Example:
$ sed '12,$d' filename.txt