Sie sind auf Seite 1von 12

Unix Sed Tutorial: Find and Replace Text Inside a File Using RegEx

1 of 12

http://www.thegeekstuff.com/2009/09/unix-sed-tutorial-replace-text-insid...

Home
About
Free eBook
Archives
Best of the Blog
Contact

Free Dating

Ads by Google

Dating Online

Dating Websites

Dating Site

Unix Sed Tutorial: Find and Replace Text Inside a


File Using RegEx
by Sasikala on September 30, 2009
3

Like

Tweet

This article is part of on-going Unix Sed Tutorial series. In


previous articles, we discussed about sed print operation and sed delete operation.
In this article let us review how to use sed substitute command s.
The `s command is probably the most important in `sed and has a lot of different options.
The `s command attempts to match the pattern space against the supplied REGEXP; if the match is successful,

1/12/2012 12:28 AM

Unix Sed Tutorial: Find and Replace Text Inside a File Using RegEx

2 of 12

http://www.thegeekstuff.com/2009/09/unix-sed-tutorial-replace-text-insid...

then that portion of the pattern space which was matched is replaced with REPLACEMENT.
Syntax:
#sed 'ADDRESSs/REGEXP/REPLACEMENT/FLAGS' filename
#sed 'PATTERNs/REGEXP/REPLACEMENT/FLAGS' filename

s is substitute command
/ is a delimiter
REGEXP is regular expression to match
REPLACEMENT is a value to replace
FLAGS can be any of the following
g Replace all the instance of REGEXP with REPLACEMENT
n Could be any number,replace nth instance of the REGEXP with REPLACEMENT.
p If substitution was made, then prints the new pattern space.
i match REGEXP in a case-insensitive manner.
w file If substitution was made, write out the result to the given file.
We can use different delimiters ( one of @ % ; : ) instead of /
Let us first create thegeekstuff.txt file that will be used in all the examples mentioned below.

$ cat thegeekstuff.txt
# Instruction Guides
1. Linux Sysadmin, Linux Scripting etc.
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)
# Additional FAQS
6. Windows- Sysadmin, reboot etc.

Let us review some interesting examples for substitution now.

1. Substitute Word Linux to Linux-Unix Using sed s//


In the example below, in the output line 1. Linux-Unix Sysadmin, Linux Scripting etc only first Linux is
replaced by Linux-Unix. If no flags are specified the first match of line is replaced.

1/12/2012 12:28 AM

Unix Sed Tutorial: Find and Replace Text Inside a File Using RegEx

3 of 12

http://www.thegeekstuff.com/2009/09/unix-sed-tutorial-replace-text-insid...

$ sed 's/Linux/Linux-Unix/' thegeekstuff.txt


# Instruction Guides
1. Linux-Unix Sysadmin, Linux Scripting etc.
2. Databases - Oracle, mySQL etc.
3. Security (Firewall, Network, Online Security etc)
4. Storage in Linux-Unix
5. Productivity (Too many technologies to explore, not much time available)
# Additional FAQS
6. Windows- Sysadmin, reboot etc.

2. Substitute all Appearances of a Word Using sed s//g


The below sed command replaces all occurrences of Linux to Linux-Unix using global substitution flag g.
$ sed 's/Linux/Linux-Unix/g' thegeekstuff.txt
# Instruction Guides
1. Linux-Unix Sysadmin, Linux-Unix Scripting etc.
2. Databases - Oracle, mySQL etc.
3. Security (Firewall, Network, Online Security etc)
4. Storage in Linux-Unix
5. Productivity (Too many technologies to explore, not much time available)
# Additional FAQS
6. Windows- Sysadmin, reboot etc.

3. Substitute Only 2nd Occurrence of a Word Using sed s//2


In the example below, in the output line 1. Linux Sysadmin, Linux-Unix Scripting etc. only 2nd occurance of
Linux is replaced by Linux-Unix.
$ sed 's/Linux/Linux-Unix/2' thegeekstuff.txt
# Instruction Guides
1. Linux Sysadmin, Linux-Unix Scripting etc.
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)
# Additional FAQS
6. Windows- Sysadmin, reboot etc.

4. Write Changes to a File and Print the Changes Using sed s//gpw
The example below has substitution with three flags. It substitutes all the occurance of Linux to Linux-Unix and
prints the substituted output as well as written the same to the given the file.
$ sed -n 's/Linux/Linux-Unix/gpw output' thegeekstuff.txt
1. Linux-Unix Sysadmin, Linux-Unix Scripting etc.
4. Storage in Linux-Unix
$ cat output
1. Linux-Unix Sysadmin, Linux-Unix Scripting etc.
4. Storage in Linux-Unix

5. Substitute Only When the Line Matches with the Pattern Using sed
In this example, if the line matches with the pattern -, then it replaces all the characters from - with the
empty.
$ sed '/\-/s/\-.*//g' thegeekstuff.txt
# Instruction Guides
1. Linux Sysadmin, Linux Scripting etc.
2. Databases

1/12/2012 12:28 AM

Unix Sed Tutorial: Find and Replace Text Inside a File Using RegEx

4 of 12

3.
4.
5.
#
6.

http://www.thegeekstuff.com/2009/09/unix-sed-tutorial-replace-text-insid...

Security (Firewall, Network, Online Security etc)


Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Additional FAQS
Windows

6. Delete Last X Number of Characters From Each Line Using sed


This sed example deletes last 3 characters from each line.
$ sed 's/...$//' thegeekstuff.txt
# Instruction Gui
1. Linux Sysadmin, Linux Scripting e
2. Databases - Oracle, mySQL e
3. Security (Firewall, Network, Online Security e
4. Storage in Li
5. Productivity (Too many technologies to explore, not much time availab
# Additional F
6. Windows- Sysadmin, reboot e

7. Eliminate Comments Using sed


Delete all the comment lines from a file as shown below using sed command.
$

sed -e 's/#.*//' thegeekstuff.txt

1.
2.
3.
4.
5.

Linux Sysadmin, Linux Scripting etc.


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

6. Windows- Sysadmin, reboot etc.

8. Eliminate Comments and Empty Lines Using sed


In this example, there are two commands seperated by ;
First command replaces the lines starting with the # to the blank lines
Second command deletes the empty lines.
$ sed -e 's/#.*//;/^$/d' thegeekstuff.txt
1. Linux Sysadmin, Linux Scripting etc.
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)
6. Windows- Sysadmin, reboot etc.

9. Convert DOS newlines (CR/LF) to Unix format Using sed


Copy the DOS file to Unix, you could find \r\n in the end of each line.
This example converts the DOS file format to Unix file format using sed command.
$sed 's/.$//' filename

10. Eliminate HTML Tags from file Using sed

1/12/2012 12:28 AM

Unix Sed Tutorial: Find and Replace Text Inside a File Using RegEx

5 of 12

http://www.thegeekstuff.com/2009/09/unix-sed-tutorial-replace-text-insid...

In this example, the regular expression given in the sed command matches the html tags and replaces with the
empty.
$ sed -e 's/<[^>]*>//g'
This <b> is </b> an <i>example</i>.
This is an example.

Tweet

Like

Share

Comment

If you enjoyed this article, you might also like..


1. 50 Linux Sysadmin Tutorials
2. 50 Most Frequently Used Linux Commands (With
Examples)
3. Top 25 Best Linux Performance Monitoring and
Debugging Tools
4. Mommy, I found it! 15 Practical Linux Find
Command Examples
5. Linux 101 Hacks 2nd Edition eBook

Awk Introduction 7 Awk Print Examples


Advanced Sed Substitution Examples
8 Essential Vim Editor Navigation
Fundamentals
25 Most Frequently Used Linux IPTables
Rules Examples
Turbocharge PuTTY with 12 Powerful
Add-Ons

Tags: Linux Sed Command, Sed Examples, Sed Tips and Tricks, Unix Sed Command, Unix Sed Substitution

1/12/2012 12:28 AM

Unix Sed Tutorial: Find and Replace Text Inside a File Using RegEx

6 of 12

http://www.thegeekstuff.com/2009/09/unix-sed-tutorial-replace-text-insid...

{ 15 comments read them below or add one }


1 Marcus Rhodes September 30, 2009 at 7:47 am
How would one rearrange the columns output by ls -al?
On AIX, which lacks gnu/Linuxs excellent features, I need ls -al to output
The filename -rwxrwxrwx 1 root root 12345678
instead of
-rwxrwxrwx 1 root root 12345678 Jan 01 2009 The filename
Thanks!
2 Paul M September 30, 2009 at 11:15 am
Ramesh,
I am getting so much benefit from these articles. Thank you! Have you had any luck with making Printer
Friendly versions of these pages? I would love to be able to print them out and write down my own notes
on them.
Paul
3 Jimi September 30, 2009 at 1:25 pm
Hi,
there seems to be some typo in example 10. I am getting this output line, which obviously is not what you
intented:
This <b is </b an <iexample</i
I could not come up with the correct version myself. Can you help?
4 Sasikala September 30, 2009 at 11:04 pm
@Marcus Rhodes,
Hope this helps,
$ ls -al The\ Geek\ Stuff | sed -e s/\(\([^ ]* \+\)\{8\}\)\(.*\)$/\3 \1/g
The Geek Stuff -rw-rr 1 user group 0 Sep 30 21:50
@Jimi,
Thanks for catching the typo.
Example: 10 command should be
$ sed -e s/<[^>]*>//g
Its for removing simple html tags.
5 amksep October 1, 2009 at 1:38 am
for example 10 i think the right syntax is
sed -e s/]*>//g

1/12/2012 12:28 AM

Unix Sed Tutorial: Find and Replace Text Inside a File Using RegEx

7 of 12

http://www.thegeekstuff.com/2009/09/unix-sed-tutorial-replace-text-insid...

6 amksep October 1, 2009 at 1:39 am


sorry you are right Jimi.
7 Nasrin October 1, 2009 at 8:58 am
@ Sasikala
$ sed -e s/]*>//g
bash: [^: No such file or directory
this also is not working
8 Ramesh Natarajan October 2, 2009 at 10:19 am
@Paul,
Print Friendly option is implemented. Youll see this at the bottom of all articles. Thanks.
9 Marcus Rhodes October 2, 2009 at 1:31 pm
Hmmm works on Ubuntu, though the filenames need padding, but has no effect on AIX.
10 Jimi October 8, 2009 at 1:48 pm
I did some googling on Example 10, and found this solution, which seems to work:
sed -n /^$/!{s/]*>//g;p;}
Its from this site:
http://www.unix.com/linux/45584-how-remove-only-html-tags-inside-file.html
11 Srinivas December 27, 2010 at 1:35 pm
Excellent! Followed all articles, all are well presented.
12 Piyush January 18, 2011 at 3:01 am
Hi,
Can i use two or more find and replace at a time using sed.
13 rishi January 25, 2011 at 1:45 am
Hi,
I am trying to write a script.
In /var/log/messages i have to delete lines older than 5days when compared to the present date. Could you
people help me out in this script.
Thanks
14 Mui June 26, 2011 at 7:31 pm
Hi,
After i type in the command, eg sed s/Linux/Linux-Unix/ thegeekstuff.txt ,

1/12/2012 12:28 AM

Unix Sed Tutorial: Find and Replace Text Inside a File Using RegEx

8 of 12

http://www.thegeekstuff.com/2009/09/unix-sed-tutorial-replace-text-insid...

I type vi thegeekstuff.txt , it appears that the old file remains. Thus, do i still need to type in anything to
save the changes in thegeekstuff.txt ??
Thanks in advance.
15 Brad October 29, 2011 at 3:15 am
@Mui,
You need to direct the output to another file; otherwise it is written to standard output, i.e. the terminal
screen. Hence:
sed s/Linux/Linux-Unix/ thegeekstuff.txt > new_file.txt
Also want to thank the blogger for this site and its edifying content.
Leave a Comment
Name
E-mail
Website

Notify me of followup comments via e-mail

Previous post: The Ultimate Wget Download Guide With 15 Awesome Examples
Next post: Ruby Hello World Example: How To Write and Execute Ruby Program on Unix OS
Sign up for our free email newsletter you@address.com
RSS

Twitter

Sign Up

Facebook

Search

1/12/2012 12:28 AM

Unix Sed Tutorial: Find and Replace Text Inside a File Using RegEx

9 of 12

http://www.thegeekstuff.com/2009/09/unix-sed-tutorial-replace-text-insid...

EBOOKS

1/12/2012 12:28 AM

Unix Sed Tutorial: Find and Replace Text Inside a File Using RegEx

10 of 12

http://www.thegeekstuff.com/2009/09/unix-sed-tutorial-replace-text-insid...

POPULAR POSTS
12 Amazing and Essential Linux Books To Enrich Your Brain and Library
50 UNIX / Linux Sysadmin Tutorials
50 Most Frequently Used UNIX / Linux Commands (With Examples)
How To Be Productive and Get Things Done Using GTD
30 Things To Do When you are Bored and have a Computer
Linux Directory Structure (File System Structure) Explained with Examples
Linux Crontab: 15 Awesome Cron Job Examples
Get a Grip on the Grep! 15 Practical Grep Command Examples
Unix LS Command: 15 Practical Examples
15 Examples To Master Linux Command Line History
Top 10 Open Source Bug Tracking System
Vi and Vim Macro Tutorial: How To Record and Play
Mommy, I found it! -- 15 Practical Linux Find Command Examples
15 Awesome Gmail Tips and Tricks
15 Awesome Google Search Tips and Tricks
RAID 0, RAID 1, RAID 5, RAID 10 Explained with Diagrams
Can You Top This? 15 Practical Linux Top Command Examples
Top 5 Best System Monitoring Tools
Top 5 Best Linux OS Distributions
How To Monitor Remote Linux Host using Nagios 3.0
Awk Introduction Tutorial 7 Awk Print Examples
How to Backup Linux? 15 rsync Command Examples
The Ultimate Wget Download Guide With 15 Awesome Examples
Top 5 Best Linux Text Editors
Packet Analyzer: 15 TCPDUMP Command Examples
The Ultimate Bash Array Tutorial with 15 Examples
3 Steps to Perform SSH Login Without Password Using ssh-keygen & ssh-copy-id
Unix Sed Tutorial: Advanced Sed Substitution Examples
UNIX / Linux: 10 Netstat Command Examples

1/12/2012 12:28 AM

Unix Sed Tutorial: Find and Replace Text Inside a File Using RegEx

11 of 12

http://www.thegeekstuff.com/2009/09/unix-sed-tutorial-replace-text-insid...

The Ultimate Guide for Creating Strong Passwords


6 Steps to Secure Your Home Wireless Network
Turbocharge PuTTY with 12 Powerful Add-Ons

About The Geek Stuff

My name is Ramesh Natarajan. I will be posting instruction guides, how-to,


troubleshooting tips and tricks on Linux, database, hardware, security and web. My focus is to write
articles that will either teach you or help you resolve a problem. Read more about Ramesh Natarajan and
the blog.

Support Us

1/12/2012 12:28 AM

Unix Sed Tutorial: Find and Replace Text Inside a File Using RegEx

12 of 12

http://www.thegeekstuff.com/2009/09/unix-sed-tutorial-replace-text-insid...

Support this blog by purchasing one of my ebooks.


Bash 101 Hacks eBook
Sed and Awk 101 Hacks eBook
Vim 101 Hacks eBook
Nagios Core 3 eBook

Contact Us
Email Me : Use this Contact Form to get in touch me with your comments, questions or suggestions about
this site. You can also simply drop me a line to say hello!.
Follow us on Twitter
Become a fan on Facebook
Copyright 20082012 Ramesh Natarajan. All rights reserved | Terms of Service | Advertise

1/12/2012 12:28 AM

Das könnte Ihnen auch gefallen