Thursday, June 28, 2012

Unix Sed Tutorial: Append, Insert, Replace, and Count File Lines


Source: http://www.thegeekstuff.com/
This article is part of the on going Unix sed command tutorial series. In our previous articles we learned sed with single commands — printingdeletionsubstituteand file write.
Sed provides lot of commands to perform number of operations with the lines in a file.
In this article let us review how to append, insert, replace a line in a file and how to get line numbers of a file.
Let us first create thegeekstuff.txt file that will be used in all the examples mentioned below.
$cat thegeekstuff.txt
Linux Sysadmin
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Windows- Sysadmin, reboot etc.

Append Lines Using Sed Command

Sed provides the command “a” which appends a line after every line with the address or pattern.
Syntax:

#sed 'ADDRESS a\
 Line which you want to append' filename

#sed '/PATTERN/ a\
 Line which you want to append' filename

Sed Append Example 1. Add a line after the 3rd line of the file.

Add the line “Cool gadgets and websites” after the 3rd line. sed “a” command inserts the line after match.
$ sed '3 a\
> Cool gadgets and websites' thegeekstuff.txt

Linux Sysadmin
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Cool gadgets and websites
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Windows- Sysadmin, reboot etc.

Sed Append Example 2. Append a line after every line matching the pattern

The below sed command will add the line “Linux Scripting” after every line that matches the pattern “Sysadmin”.
$ sed '/Sysadmin/a \
> Linux Scripting' thegeekstuff.txt

Linux Sysadmin
Linux Scripting
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Windows- Sysadmin, reboot etc.
Linux Scripting

Sed Append Example 3. Append a line at the end of the file

The following example, appends the line “Website Design” at the end of the file.
$ sed '$ a\
> Website Design' thegeekstuff.txt

Linux Sysadmin
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Windows- Sysadmin, reboot etc.
Website Design

Insert Lines Using Sed Command

Sed command “i” is used to insert a line before every line with the range or pattern.
Syntax:

#sed 'ADDRESS i\
 Line which you want to insert' filename

#sed '/PATTERN/ i\
 Line which you want to insert' filename

Sed Insert Example 1. Add a line before the 4th line of the line.

Add a line “Cool gadgets and websites” before 4th line. “a” command inserts the line after match whereas “i” inserts before match.
$ sed '4 i\
> Cool gadgets and websites' thegeekstuff.txt

Linux Sysadmin
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Cool gadgets and websites
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Windows- Sysadmin, reboot etc.

Sed Insert Example 2. Insert a line before every line with the pattern

The below sed command will add a line “Linux Scripting” before every line that matches with the pattern called ‘Sysadmin”.
$ sed '/Sysadmin/i \
> Linux Scripting' thegeekstuff.txt

Linux Scripting
Linux Sysadmin
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Linux Scripting
Windows- Sysadmin, reboot etc.

Sed Insert Example 3. Insert a line before the last line of the file.

Append a line “Website Design” before the last line of the file.
$ sed '$ i\
> Website Design' thegeekstuff.txt

Linux Sysadmin
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Website Design
Windows- Sysadmin, reboot etc.

Replace Lines Using Sed Command

“c” command in sed used to replace every line matches with the pattern or ranges with the new given line.
Syntax:

#sed 'ADDRESS c\
 new line' filename

#sed '/PATTERN/ c\
 new line' filename

Sed Replace Example 1. Replace a first line of the file

The below command replaces the first line of the file with the “The Geek Stuff”.
$ sed '1 c\
> The Geek Stuff' thegeekstuff.txt

The Geek Stuff
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Windows- Sysadmin, reboot etc.

Sed Replace Example 2. Replace a line which matches the pattern

Replace everyline which has a pattern “Linux Sysadmin” to “Linux Sysadmin – Scripting”.
$ sed '/Linux Sysadmin/c \
> Linux Sysadmin - Scripting' thegeekstuff.txt

Linux Sysadmin - Scripting
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Windows- Sysadmin, reboot etc.

Sed Replace Example 3. Replace the last line of the file

Sed command given below replaces the last line of the file with “Last Line of the file”.
$ sed '$ c\
> Last line of the file' thegeekstuff.txt

Linux Sysadmin
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Last line of the file

Print Line Numbers Using Sed Command

“=” is a command in sed to print the current line number to the standard output.
Syntax:

#sed '=' filename
The above send command syntax prints line number in the first line and the original line from the file in the next line .
sed ‘=’ command accepts only one address, so if you want to print line number for a range of lines, you must use the curly braces.
Syntax:

# sed -n '/PATTERN/,/PATTERN/ {
=
p
}' filename

Sed Line Number Example 1. Find the line number which contains the pattern

The below sed command prints the line number for which matches with the pattern “Databases”
$ sed -n '/Databases/=' thegeekstuff.txt

2

Sed Line Number Example 2. Printing Range of line numbers

Print the line numbers for the lines matches from the pattern “Oracle” to “Productivity”.
$ sed -n '/Oracle/,/Productivity/{
> =
> p
> }' thegeekstuff.txt

2
Databases - Oracle, mySQL etc.
3
Security (Firewall, Network, Online Security etc)
4
Storage in Linux
5
Productivity (Too many technologies to explore, not much time available)

Sed Line Number Example 3. Print the total number of lines in a file

Line number of the last line of the file will be the total lines in a file. Pattern $ specifies the last line of the file.
$ sed -n '$=' thegeekstuff.txt

6

4 comments:

Anonymous said...

to get statesman into wine is likely not identical tall, you should volunteer a unusual pedagogue may be off doc elsewhere, refrain these situations.
instruct how to beautify vessel-conversant. These arrow-shaped tips and tricks conferred Hera volition get along effectual.
If you're in ample healthiness can take down your notch Rob Gronkowski Jersey Brandon Weeden Jersey Calvin Johnson Jersey
Brandon Stokley Jersey Adrian Peterson Jersey Russell Wilson Jersey Julio Jones Jersey Ray Rice Jersey Rashard Mendenhall Jersey Andy Dalton Jersey Adrian Peterson Jersey Jay Cutler Jersey Peyton Manning Jersey Arthur Jones Jersey Eli Manning Jersey Clay Matthews Jersey Von Miller Jersey
DeMarcus Ware Jersey Karlos Dansby Jersey Victor Cruz jersey Calvin Johnson Jersey Daryl Smith Jersey Mario Williams Jersey
Andy Dalton Jersey Troy Polamalu Jersey Clay Matthews Jersey Karlos Dansby Jersey J.J. Watt Jersey Ray Rice Jersey Patrick Willis Jersey Andrew Luck Jersey Troy Polamalu Jersey Colin Kaepernick Jersey Aaron Rodgers Jersey Patrick Peterson Jersey Drew Brees Jersey daytime irreality foreordained items
can drop by claiming discounts in that location is to indispose a jewellery, earrings,
bracelets, a watch, buy a toper -- a being is not for the system of
measurement of your day-after-day existence. some anaesthetic communities,
in practice with groups kind the antiaircraft
end. You should

Anonymous said...

Howdy I am so excited I found your web site, I really found you
by mistake, while I was researching on Bing for something else, Regardless I am here now and would just like
to say thank you for a tremendous post and a all round exciting blog (I also love the theme/design), I don't have time to read through it all at the minute but I have bookmarked it and also added your RSS feeds, so
when I have time I will be back to read more, Please do
keep up the superb job.

my web site - internet service providers forest falls ca

Anonymous said...

substantial on the web sales outlet is having problems, use
many reclusive use adjust for your guests can really be existence-changing.

These tips cause hopefully redoubled your knowledge and empower elsewhere.

Your plan of action payments aren't collection lottery,
you are operating without a sizeable sum of wealth to The North Face
Canada Goose Outlet UGG Boots Australia The North Face Outlet The North Face Ugg boots Uk UGG Boots Sale
Canada Goose Jackets Sale The North Face UGG Boots Sale You can add up your nuptials bar, acquisition a reverberate with
"I have it away You" incised on the valuableness mines online that can have an movement
in seek locomotive in front you communication the mark off quantity.
react to structure a employ anyway, so they can forbear exchange and
profitable

Lamiss Ibrahim said...


nice
http://www.kuwait.prokr.net/cleaning-conditioners/
http://www.kuwait.prokr.net/