Re: sort output-so-far (fwd)

gregrwm <[email protected]>
Newsgroups gmane.user-groups.linux.tclug
Message-ID <CAD+dB9AHpadxyJ5YmkBUa0+a51brM13ywz66qbqoAi=Yc9HT2Q@mail.gmail.com>
On Fri, Apr 2, 2021 at 4:16 PM Mike Miller wrote:

> On Fri, 2 Apr 2021, gregrwm wrote:
> > From Mike Miller 26 Mar 2021 14:24:39
> >> On Thu, 25 Mar 2021, gregrwm wrote:
> >>> question for bashers:
> >>>
> >>> a bash command entered as a foreground job may fork, leave something
> >>> in the background, and exit to the bash prompt, and the job in the
> >>> background will print it's output whenever it has any.  So far so
> >>> good.
> >>>
> >>> i want to enter a command which launches 3 subcommands in parallel,
> >>> wait up to 3 seconds unless all 3 subcommands finish sooner, sort all
> >>> their output-so-far together, print it, and exit to the bash prompt at
> >>> this point, and if any of the subcommands weren't finished, leave them
> >>> in the background and let them print more output whenever they have
> >>> any.
> >>>
> >>> easy?  hard?
> >>
> >>
> >> Can you use tee to send output to a temp file?
> >>
> >> process | tee file | whatevs
> >>
> >> Data coming out of "process" will go to "file" but it will also go to
> >> "whatevs" for further processing.
> >>
> >> Then you read from file.  Mutiple processes could make multiple files.
> >> Use the temp command to make the files.  One thing I'm not completely
> >> sure of: does tee write continously to file, or does it do it in only
> >> at certain moments, like after each block of data comes out?  I'm
> >> guessing continuous but not sure.
> >>
> >> Mike
> >
> >
> > what's behind the question is asking several hosts for their list of
> > virtual guests and sorting the list together, and it would be nice to
> > come up with the sorted list right away even if one or more of the hosts
> > is down.  my current and obvious compromise just waits for all results
> > before finishing.
>
>
> If you have some idea of how many lines you'll be sorting, you should be
> able to sort that many lines into a file while waiting for the remaining
> lines.  To put the first $N lines into a temp file, do this:
>
> process | tee >(head -$N | sort > tempfile_$N) | whatevs
>
> The whole unsorted output still goes to "whatevs".  So you could string
> together a bunch of those tee commands and have them process increasingly
> more numbers of lines.  Or you could do this...
>
> process | tee tempfile | whatevs
>
> Then just do this whenever you please:
>
> sort tempfile | less
> Mike



it's a good suggestion.  what i've done with it:  toss the subcommands into
the background, tee them to a file, see the unsorted output as it arrives
on standard out, and run a second command that sorts from the file.  the
only bit still missing would be to wait either for all subcommands to
finish, or 3 seconds, whichever comes first, and then do the sort.  but
this is already good enough.  thanks!

-- 
this concludes test 42 of big bang inflation dynamics.  in the advent of an
actual universe, further instructions will be provided.
000000000000000000000042

_______________________________________________
TCLUG Mailing List - Minneapolis/St. Paul, Minnesota
[email protected]
http://mailman.mn-linux.org/mailman/listinfo/tclug-list
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.