howto join lines

Patrick O'Callaghan pocallaghan at gmail.com
Thu Oct 2 00:39:08 UTC 2008


On Wed, 2008-10-01 at 20:04 -0400, Chris Tyler wrote:
> On Thu, 2008-10-02 at 09:37 +1000, Norman Gaywood wrote:
> > On Wed, Oct 01, 2008 at 03:55:08PM -0400, Chris Tyler wrote:
> > > On Wed, 2008-10-01 at 14:40 -0500, Les Mikesell wrote:
> > > > Patrick O'Callaghan wrote:
> > > > >
> > > > >>>> i want to have those lines joined to one line with
> > > > >>> spaces
> > > > >>>> Before :
> > > > >>>>
> > > > >>>> textone
> > > > >>>> texttwo
> > > > >>>> something
> > > > >>>>
> > > > >>>> After :
> > > > >>>>
> > > > >>>> textone texttwo something
> > > > >>>>
> > > > 
> > > > echo `cat multi_line_file`
> > > > or
> > > > echo $(cat multi_line_file`)
> > > 
> > > Or to avoid the fork & exec:
> > > 
> > >     echo $(<multi_line_file)
> > 
> > But you will end up with problems with the number of arguments on a
> > command line if multi_line_file is too large.
> > 
> > How about:
> > 
> > cat multi_line_file | xargs
> > 
> > Note that the default command for xargs is echo
> > 
> > Or, to avoid a "useless use of cat" award (see
> > http://partmaps.org/era/unix/award.html):
> > 
> > xargs < multi_line_file
> 
> Alas, that doesn't solve the problem with the excessive number/length of
> arguments either, because xargs will execute the echo multiple times if
> necessary to keep within the arg limits, potentially generating newlines
> in the output.
> 
> ...Which is why I like the translate I proposed earlier:
> 
>    tr "\012" " " <multi_line_file

tr -d "\012" < multi_line_file

is slightly more elegant. Of course this assumes the file is ASCII or
similar.

poc




More information about the fedora-list mailing list