On Wed, Dec 19, 2007 at 12:46:51PM +1100, Scott Ragen wrote:
> [EMAIL PROTECTED] wrote on 19/12/2007 11:34:30 AM:
> > Norman Gaywood wrote:
> > > perl -00 -ne 'print tr/,//' input.txt
> > 
> > I nominate the perl soln as the winner so far: runs like
> > a bat of out hell and is the most easy to understand.
> > And the shortest in source code size.
> 
> I have to disagree. Whilst it may be fast, its not 100% correct.
> Most of the time it would probably work, but if there are any blank lines, 
> it outputs the current count, and starts again.
> 
> Consider the following file contents:
> --file contents--
> this,is,the,first,line
> this,is,the,second
> 
> the,above,was,a,blank,line
> 
> and,another,blank,line
> --end file contents--
> 
> On Jeff's original command:
> sed 's#[^,]*##g' input.txt | tr -d '\n' | wc -m
> 15
> 
> The perl command:
> perl -00 -ne 'print tr/,//' input.txt
> 753

You are correct. I misread the perlrun man page. -00 means paragraph
mode. I wanted slurp mode, which is the slightly uglier -0777. So the perl
solution should be:

perl -0777 -ne 'print tr/,//' input.txt

There is also the slightly shorter, tending to perl ugly instead of
perl neat:

perl -0777 -pe '$_=tr/,//' input.txt

-- 
Norman Gaywood, Systems Administrator
University of New England, Armidale, NSW 2351, Australia

[EMAIL PROTECTED]            Phone: +61 (0)2 6773 3337
http://mcs.une.edu.au/~norm    Fax:   +61 (0)2 6773 3312

Please avoid sending me Word or PowerPoint attachments.
See http://www.gnu.org/philosophy/no-word-attachments.html
-- 
SLUG - Sydney Linux User's Group Mailing List - http://slug.org.au/
Subscription info and FAQs: http://slug.org.au/faq/mailinglists.html

Reply via email to