Se um programa Awk tiver um bloco "middle" ou END
, a entrada será lida. Podemos
contrarie isso fornecendo uma entrada nula:
$ cat prog.awk
1
END {
print "fin"
}
$ awk -f prog.awk /dev/null
fin
Se quisermos que este seja o padrão, podemos adicionar um bloco a "help.awk":
BEGIN {
if (ARGC == 1 && !system("[ -t 0 ]")) {
ARGV[ARGC++] = "/dev/null"
}
}
No entanto, isso cria uma mudança importante; O awk não lerá do terminal, a menos que você adiciona um traço:
awk -f help.awk -f prog.awk -
ou modifique "prog.awk":
getline < "-"
Exemplo de entrada de leitura:
$ cat prog.awk
/4/ {
really_exit()
}
1
END {
print "fin"
}
$ seq 10 | awk -f help.awk -f prog.awk
1
2
3
Exemplo não lendo entrada:
$ cat prog.awk
BEGIN {
print "start"
really_exit()
}
END {
print "fin"
}
$ awk -f help.awk -f prog.awk
start