Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 12 May 2006 10:41:34 -0600 (MDT)
From:      Warren Block <wblock@wonkity.com>
To:        Giorgos Keramidas <keramida@ceid.upatras.gr>
Cc:        Martin McCormick <martin@dc.cis.okstate.edu>, freebsd-questions@freebsd.org
Subject:   Re: Trimming Whitespace From Beginning and end of Text Lines
Message-ID:  <20060512102134.J14220@wonkity.com>
In-Reply-To: <20060512150608.GB25497@gothmog.pc>
References:  <200605121450.k4CEokhn022089@dc.cis.okstate.edu> <20060512150608.GB25497@gothmog.pc>

next in thread | previous in thread | raw e-mail | index | archive | help
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

Notes:
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060512102134.J14220>