Date: Fri, 12 May 2006 18:51:30 +0200 From: Kyrre Nygard <kyrreny@broadpark.no> To: Martin McCormick <martin@dc.cis.okstate.edu>, freebsd-questions@freebsd.org Subject: Re: Trimming Whitespace From Beginning and end of Text Lines Message-ID: <7.0.1.0.2.20060512184738.022275a8@broadpark.no> In-Reply-To: <200605121450.k4CEokhn022089@dc.cis.okstate.edu> References: <200605121450.k4CEokhn022089@dc.cis.okstate.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
At 16:50 12.05.2006, Martin McCormick wrote: > This looks like something sed should be able to do, but I >haven't had any luck at all. I wanted to remove any whitespace >that has accidentally gotten added to the beginning or end of >some lines of text. I made a test file that looks like: > >left justified. > lots of spaces. > >and the best I have done so far is to get rid of about 3 spaces. > >Attempt 1. > >#! /usr/bin/sed -f >s/ \+//g >s/^ //g >s/ $//g > > This looks like it should do the job, but the leading and >trailing spaces are still mostly there. > > I wrote another script. Attempt 2. > >#! /bin/sh > >sed 's/^[[:space:]]//g' \ >|sed 's/[[:space:]]$//g' > > If I cat the test file through this script, it also >removes one or two spaces, but not all the leading and trailing >whitespace I put there. I can write a program in C to do this, >but is there a sed script or other native application in FreeBSD that >can do this? > > Thank you. > >Martin McCormick WB5AGZ Stillwater, OK >Systems Engineer >OSU Information Technology Department Network Operations Group What's up man? Here's a script I use to remove trailing whitespace. It also reduces two or more empty lines like this: -- -- To just one: -- -- And it converts ASCII files to UNIX format (that is without ^M). Then for pretty sake, it adds an empty line to the end of each file. -- #!/usr/local/bin/bash # # Remove CRLF, trailing whitespace and double lining. # $MERHABA: ascii_clean.sh,v 1.0 2007/11/11 15:09:05 kyrre Exp $ # for file in `find -s . -type f`; do if file -b $file | grep -q 'text'; then echo >> $file tr -d '\r' < $file | cat -s | sed -E -e 's/[[:space:]]+$//' > $file.tmp mv -f $file.tmp $file echo "$file: Done" fi done -- I'd be interested in knowing if you manage to improve this script. Take care, Kyrre
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?7.0.1.0.2.20060512184738.022275a8>