On 7 Mrz., 11:58, Tomasz Chmielewski <t...@[EMAIL PROTECTED]
>
wrote:
> Janis schrieb:
>
> >> "out.txt" file is empty, nothing was printed to the screen. Where did
> >> the output redirection go?
>
> > In an I/O buffer that hasn't got filled enough to be flushed
> > before you aborted the process.
>
> > To understand, try...
>
> > while true; do date; sleep 1; done | head -3 | awk '{print $4}' >
> > out.txt
>
> > (BTW, this is off-topic here; comp.unix.shell is more appropriate.)
>
> Actually, it's awk, not shell setting (or any other program that
> buffers, like grep).
No, it's neither awk nor grep that buffers; it's the OS (Unix in
your example).
>
> I solved it in gawk by adding {fflush()}:
>
> iostat dm-1 -d 1 -k | awk '/dm-1/{print $3" "$4}{fflush()}' >output.st
>
> For grep, BTW, the option is "--line-buffered".
>
> --
> Tomasz Chmielewskihttp://wpkg.org
Mind, the buffering is an OS issue, all the pipelines and external
commands is a unix shell issue, and the option you presented is an
tool specific issue (not even standardized), and the only awk'ish
part of the posting is either trivial (print $4) or non-standard
(fflush() seems not be defined by POSIX, according to the GNU docs).
Anyway; glad you've solved the issue once you knew about buffering.
Janis


|