blog:common_sed_taks

Common SED taks

The bread and butter of sed is its search-and-replace functionality. Let’s start with that and then throw in some other fun commands. Tutorial

As with the previous posts, if you are on Windows you’ll want to install Cygwin or one of the various other tools suggested in the previous comments. sed also uses regular expressions so you’ll want to keep your regex reference handy.

sed 's/#FF0000/#0000FF/g' main.css

We can read this like so: search [s/] for red [#FF0000/] and replace it with blue [#0000FF], globally [/g] in main.css. Two notes here: 1) This does not actually modify the file, but outputs what the file would look like if it did the replace and 2) If we left off the “g” at the end it would only replace the first occurrence. So let’s modify the file this time.

sed -i -r 's/#(FF0000|F00)b/#0F0/g' main.css

This is an example from the find tutorial that replaces all instances of red with green in our CSS file. The -r option here gives us extra regex functionality. As Sheila mentioned in the find post, -i does not work on Solaris and she suggests something like perl -e s/foo/bar/g -i instead.

Suppose we want to change a whole color scheme though, the best way is to use a sed script file like so:

sedscript - one command per line

s/#00CC00/#9900CC/g
s/#990099/#000000/g
s/#0000FF/#00FF00/g
...

use sedscript with -f

sed -i -f sedscript *.css

sedscript is obviously a new file we have created. Note that we don’t quote the commands in the file. Now we have successfully changed our color scheme in our CSS files. Other Examples

Trim whitespace from beginning and end of line You *might* have to type a tab instead of t here depending on your version of sed

sed -r 's/^[ t]*//;s/[ t]*$//g'

Delete all occurances of foo

sed 's/foo//g'

Here are some good references you should bookmark

~~LINKBACK~~ ~~DISCUSSION~~

  • blog/common_sed_taks.txt
  • Last modified: 2009/07/29 18:18
  • by brb