Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 1 Sep 2009 13:52:01 -0700
From:      George Davidovich <freebsd@optimis.net>
To:        freebsd-questions@freebsd.org
Subject:   Re: remove newlines from a file
Message-ID:  <20090901205201.GA6126@marvin.optimis.net>
In-Reply-To: <F2B402210EF1C4F7331B41C2@utd65257.utdallas.edu>
References:  <F2B402210EF1C4F7331B41C2@utd65257.utdallas.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Sep 01, 2009 at 06:03:19PM +0000, Paul Schmehl wrote:
> I found a sed tutorial once that did this, but I can't seem to find it
> again.  

You're probably thinking of "Useful One-Line Scripts for Sed":

http://sed.sourceforge.net/sed1line.txt

A good follow-up:

http://www.osnews.com/story/21004/Awk_and_Sed_One-Liners_Explained

> I have a file with multiple lines, each of which contains a single ip
> followed by a /32 and a comma.  I want to combine all those lines into
> a single line by removing all the newline characters at the end of
> each line.
> 
> What's the best/most efficient way of doing that in a shell?

A sed solution would be

  sed -e :a -e '$!N; s/\n/ /; ta' my_file

Other (easier to remember) solutions could include:

  tr -d '\n' < my_file
  tr '\n' ' ' < my_file 

  echo $(cat my_file)  # not so useless use of cat!
 
  paste -s my_file

  while read line; do 
    joined="$joined $(echo $line)"
  done < my_file
  echo $joined

Lots of options, of course.  Even more with Perl. 

-- 
George



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