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