Por que o awk '{print “Hi, Judy”}' imprime “Oi, Judy” repetidamente ao pressionar Return?

4

No meu entender, geralmente awk segue um arquivo ou uma saída.

Em seguida, ele executará seu código em todas as linhas desse arquivo ou saída.

No meu caso, meu comando awk '{print "Hi, Judy"}' não seguiu nenhum arquivo ou saída.

No meu entender, não deve imprimir nada nem gerar um erro.

Mas por que, na realidade, ele pula uma linha de comando interativa na qual se eu continuar pressionando Enter , ele irá me mostrar algo infinitamente como:

Hi, Judy

Hi, Judy

Hi, Judy

Por que esse comando funciona assim?

# conteúdo abaixo desta linha divisória deve ser ignorado

Pergunta adicional:

Eu tentei outro comando:

awk ' BEGIN { print "Hi." }  { print "Buddy." } { print "Bye." } '

Espero que ele imprima Hi. Buddy. Bye. Infinitamente.

Mas eu tenho:

Hi.

Buddy
Bye.

Buddy
Bye.

Buddy
Bye.

O que me confunde novamente. Por que o END clause funciona infinitamente, enquanto BEGIN clause só funciona uma vez aqui?

    
por Zen 05.02.2015 / 11:52

1 resposta

4

Está lendo de stdin, ou seja, o seu teclado.

Tente ver o que quero dizer

awk '{ print "Here is your line:", $0 }'
    
por 05.02.2015 / 11:54

Tags