bash - processing output one line at a time
You can try the same command, this time using multiple hacks to avoid buffering:
./gen-data | gawk '{printf $2 " "; printf $1=$2=$3=""; gsub (" ", "", $0);if(length($0) == 0){ print "0000"} else{print $0}; fflush(stdout)}' | stdbuf -o0 xargs -t -n2 -P1 bash -c 'datatojson "$@"' _
Mind the change from awk
to gawk
and the use of fflush
. You can also try mawk -Winteractive
.
Also mind that I added stdbuf -o0
before xargs. You can also try the latest at the beginning with ./gen-data