On Fri, 12 May 2006, Giorgos Keramidas wrote:

There are at least the following ways:

        sed -i -e 's/^[[:space:]]*' -e 's/[[:space:]]*$//' file ...
        perl -pi -e 's/^\s*(\S.*\S)[ \t]*$/$1/' file ...

The first one seems more straightforward to me most of the time,
but there are times I find Perl's `-pi -e ...' idiom very convenient.

Neither of those work here:

The first sed expression is missing "//".  Correcting that:
  sed -i -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' test.txt
  sed: lstat: No such file or directory

The Perl version shows no difference between the original and processed file. It's complex, too. This one works:

  perl -pi -le 's/^\s+//; s/\s+$//' test.txt

1. sed always seems to be a pain.  My compliments to those who use it
   regularly; the only time I use it at all is when Perl (or something
   else with better handling of regular expressions) is not available.
2. The -l option to perl is needed to preserve line endings.
3. The last version is based on the more efficient way of doing it as
   per: man -P 'less +/trim' perlop

-Warren Block * Rapid City, South Dakota USA
freebsd-questions@freebsd.org mailing list
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to