A função system()
em awk
executa o comando e retorna seu status. Você tem 0
porque o comando é sucesso. A saída de date +'%s'
foi impressa separadamente.
Para obter a saída do comando externo, use getline () :
$ echo foo bar baz | awk '{"date +%s" | getline d; printf "%s %s\n", d, $0}'
1491147643 foo bar baz
Não há nada a ver com OFS
, porque é um espaço por padrão.
Com gawk
ou mawk
, você também pode fazer:
echo foo bar baz | gawk '{printf "%s %s\n", systime(), $0}'
O systime()
retorna o número de segundos desde a época, sem contar os segundos de salto
IOW, você pode fazer isso sozinho com date
:
date +'%s foo bar baz'