Successivo: , Precedente: , Su: Installazione su PC   [Contenuti][Indice]


B.3.1.3 Usare gawk su sistemi operativi PC

Sotto MS-Windows, l’ambiente MinGW consente di usare sia l’operatore ‘|&’ che le operazioni su rete TCP/IP (vedi la sezione Usare gawk per la programmazione di rete). L’ambiente DJGPP non consente di usare ‘|&’.

Le versioni MS-Windows di gawk ricercano i file di programma come descritto in Ricerca di programmi awk in una lista di directory.. Comunque, gli elementi della variabile AWKPATH sono separati tra di loro da un punto e virgola (anziché da due punti (:)). Se AWKPATH è non impostata o ha per valore la stringa nulla, il percorso di ricerca di default è ‘.;c:/lib/awk;c:/gnu/lib/awk’.

Sotto MS-Windows, gawk (come molti altri programmi di trattamento testi) converte automaticamente la stringa di fine riga ‘\r\n’ in ‘\n’ leggendo dall’input e ‘\n’ in ‘\r\n’ scrivendo sull’output. La variabile speciale BINMODE (e.c.) permette di controllare come avvengono queste conversioni, ed è interpretata come segue:

La modalità di trattamento dello standard input e standard output sono impostate una volta sola (dopo aver letto la riga di comando, ma prima di iniziare a elaborare qualsiasi programma awk). L’impostazione di BINMODE per standard input o standard output va fatta usando un’appropriata opzione ‘-v BINMODE=N’ sulla riga di comando. BINMODE è impostato nel momento in cui un file o pipe è aperto e non può essere cambiato in corso di elaborazione.

Su sistemi compatibili con POSIX, il valore di queta variabile non ha alcun effetto. Pertanto, se si pensa che un dato programma sarà eseguito su parecchi sistemi differenti, e che sia necessario usare BINMODE, è possibile impostarlo semplicemente (nel programma o sulla riga di comando) incondizionatamente, senza preoccuparsi del sistema operativo sotto il quale il programma viene eseguito.

Il nome BINMODE è stato scelto in analogia con mawk (vedi la sezione Altre implementazioni di awk liberamente disponibili). mawk e gawk gestiscono BINMODE in maniera simile; tuttavia, mawk prevede un’opzione ‘-W BINMODE=N’ e una variabile d’ambiente che può impostare BINMODE, RS, e ORS. I file binmode[1-3].awk (nella directory gnu/lib/awk in alcune delle distribuzioni binarie già predisposte) sono stati inclusi per rendere disponibile l’opzione di mawk-W BINMODE=N’. Questi possono essere modificati o ignorati; in particolare, quale sia l’impostazione di RS che dà meno “sorprese” rimane una questione aperta. mawk usa ‘RS = "\r\n"’ se si imposta la modalità binaria in lettura, il che è appropriato per file che abbiano i caratteri di fine riga in stile MS-DOS.

Per chiarire, gli esempi seguenti impostano la modalità binaria in scrittura per lo standard output e altri file, e impostano ORS in modo da ottenere la fine riga “normale” in stile MS-DOS:

gawk -v BINMODE=2 -v ORS="\r\n" …

o:

gawk -v BINMODE=w -f binmode2.awk …

Questi comandi danno lo stesso risultato dell’opzione ‘-W BINMODE=2’ in mawk. Quanto segue modifica il separatore di record a "\r\n" e imposta la modalità binaria in lettura, senza modificare le letture da standard input:

gawk -v RS="\r\n" -e "BEGIN { BINMODE = 1 }" …

o:

gawk -f binmode1.awk …

Usando i caratteri di protezione appropriati, nel primo esempio l’impostazione di RS può essere spostata in una regola BEGIN.


Successivo: , Precedente: , Su: Installazione su PC   [Contenuti][Indice]