Sed

Sed is a very useful program that often is used as a filter in shell scripts.

From the sed man page:

Sed is a stream editor. A stream editor is used to perform basic text transformations on an input stream (a file or input from a pipeline).

Simple find-and-replace in text file

To replace all occurrences of the string findme and replace it with the string replaceme in a file named test.file using sed just use the follwing command.

1
sed -e 's/findme/replaceme/g' test.fil > newtest.fil

Removing a complete XML element with body

Consider the following XML formated addressbook.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<?xml version="1.0" encoding="utf-8"?>
<addressbook>
  <contact name="Bob">
     <phone type="mobile" number="555 555 555" />
     <address street="Lodge Hotell" city="Twin Peaks" />
  </contact>
  <contact name="Alice">
     <phone type="work" number="555 555 555" />
     <address street="Queen Street 3" city="Wonder Land" />
  </contact>
</addressbook>

Lets say we want to remove Bob from this addressbook.

1
sed -e '/<contact name="Bob"/,/<\/contact>/ d' addressbook.xml