Successivo: , Precedente: , Su: Eseguire gawk   [Contenuti][Indice]


1.1.2 Senza uso di file in input (input immesso da tastiera)

Si può anche eseguire awk senza indicare alcun file in input. Se si immette la seguente riga di comando:

awk 'programma'

awk prende come input del programma lo standard input, che di solito significa qualsiasi cosa venga immesso dalla tastiera. Ciò prosegue finché non si segnala una fine-file battendo Ctrl-d. (In sistemi operativi non-POSIX, il carattere di fine-file può essere diverso.)

Per esempio, il seguente programma stampa un consiglio da amico (dalla Guida galattica per gli autostoppisti di Douglas Adams ), per non lasciarsi spaventare dalle complessità della programmazione per computer:

$ awk 'BEGIN { print "Non v\47allarmate!" }'
-| Non v'allarmate!

awk esegue le istruzioni associate a BEGIN prima di leggere qualsiasi input. Se non ci sono altre istruzioni nel proprio programma, come in questo caso, awk si ferma, invece di tentare di leggere input che non sa come elaborare. Il ‘\47’ è un modo straordinario (spiegato più avanti) per inserire un apice singolo nel programma, senza dover ricorrere a fastidiosi meccanismi di protezione della shell.

NOTA: Se si usa Bash come shell, si dovrebbe digitare il comando ‘set +H’ prima eseguire questo programma interattivamente, per non avere una cronologia dei comandi nello stile della C shell, che tratta il ‘!’ come un carattere speciale. Si raccomanda di inserire quel comando nel proprio file di personalizzazione della shell.

Il seguente semplice programma awk emula il comando cat; ovvero copia qualsiasi cosa si batta sulla tastiera nel suo standard output (perché succede è spiegato fra poco):

$ awk '{ print }'
Ora è il tempo per tutti gli uomini buoni
-| Ora è il tempo per tutti gli uomini buoni
di venire in aiuto al loro paese.
-| di venire in aiuto al loro paese.
Or sono sedici lustri e sette anni, ...
-| Or sono sedici lustri e sette anni, ...
Cosa, io preoccupato?
-| Cosa, io preoccupato?
Ctrl-d

Successivo: , Precedente: , Su: Eseguire gawk   [Contenuti][Indice]