We use sed to perform simple manipulation on data as a stream - it's a Stream EDitor.
It generally operates on the stream line by line but can be made to operate on a multi-line buffer if needed.
Here are a bundle of command line examples with
-e switch defines a patter to edit with and
-i is used for inline-replacement on files - be careful!
The most common thing to do with sed. First replaces all the instances of Alan with Bill, second only when Carl is in the line too, third when Dirk is not present.
sed -e 's/Alan/Bill/g' sed -e '/Carl/s/Alan/Bill/g' sed -e '/Dirk/!s/Alan/Bill/g'
Strip Comments, Blank Lines
The first pattern strips comments (starting with # to end of line), then strip trailing white-space, then blank lines. The second example just uses % as the comment character.
sed -e 's/#.*//' -e 's/[ \t]*$//' -e '/^$/ d' /etc/hosts sed -e 's/%.*//' -e 's/[ \t]*$//' -e '/^$/ d' /etc/jabber/ejabberd.cfg
First replaces leading whitespace, second replaces trailing whitespace, thrid does both at the same time.
sed 's/^[ \t]*//' sed 's/[ \t]*$//' sed 's/^[ \t]*//;s/[ \t]*$//'
Convert Line Endings
First join line pairs, then join lines that end with
sed 'N;s/\n/ /' sed -i -e :a -e '$!N; s/,\n/,/; ta'
Adding Line Numbers