Saturday, April 01, 2006

Removing Blank Line using SED


Using sed, you can remove blank lines, and
lines that contain only whitespace, from a
file using the following:

sed -e '/^[ ]*$/d' InputFile >OutputFile

Within the single quotes ('), the forward
slashes (/) delimit the regular expression
that will be interpreted by sed. The "d"
before the closing single quote, tells sed
to delete any lines that match the regular

Within the regular expression, the caret
(^) matches the beginning of a line.
The []* matches zero to many occurrences of
the character list between the open bracket
([) and the close bracket (]) (in the above
regular expression, you must insert a space
and a tab between the brackets). The dollar
sign ($) matches the end of a line.

These three constructs together match any
blank line or any line that contains only
spaces and tabs (in any combination).

Since the standard operation of sed is to
echo lines to stdout, all lines except blank
lines (or lines that only contain whitespace)
will be sent to OutputFile.

1 comment:

Kurt Mueller said...

You could use the character class [[:space:]] for white space:
sed -e '/^[[:space:]]*$/d'
see man 7 regex