Por que esse coprocess gawk está suspenso?

3

Durante o Converter data no shell bash , tentei Recurso coprocessado do GNU awk :

gawk -F, -v cmd='date +"%Y-%m-%d %H:%M:%S" -f-' '{print $5 |& cmd; cmd |& getline d; $5 = d}1' foo

Este comando trava. Eu pensei que isso poderia ser porque date está esperando para ler a entrada inteira, então eu tentei fechar a metade de envio do pipeline:

gawk -F, -v cmd='date +"%Y-%m-%d %H:%M:%S" -f-' '{print $5 |& cmd; close(cmd, "to"); cmd |& getline d; $5 = d}1' foo

Isso funciona (sim, eu sei que devo definir OFS=, , mas por enquanto ...).

No entanto, date parece não ter problemas para processar a entrada à medida que ela entra. Isso fornece a primeira linha de saída imediatamente:

d='Thu Apr 27 2017 23:19:47 GMT+0700 (ICT)'
(echo "$d"; sleep 1m; echo "$d") |
  date +"%Y-%m-%d %H:%M:%S" -f-

O que está acontecendo?

    
por muru 31.05.2017 / 08:32

0 respostas