Atual
$ ./slow
Starting ...
Nearly finished ...
All done.
Desejado
$./slow | ./stamp
15:31:19 Starting ...
15:31:29 Nearly finished ...
15:31:31 All done.
Prog lento
$ cat slow
#!/usr/bin/ksh
echo Starting ...
sleep 10
echo Nearly finished ...
sleep 2
echo All done.
Timestamper
$ cat stamp
#!/usr/bin/perl
use strict;
use warnings;
while(<>) {
my($sec, $min, $hour) = (localtime)[0..2];
print "$hour:$min:$sec $_";
}
Na verdade, estou surpreso que isso funcione, eu pensei que teria que fazer algo sobre buffering. YMMV
Usando sprintf
para formatar, o tempo é deixado como um exercício para o leitor.
Para golfistas
$ ./slow | perl -n -e 'printf "%02d:%02d:%02d %s", (localtime)[2,1,0],$_'
15:42:17 Starting ...
15:42:27 Nearly finished ...
15:42:29 All done.