You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
106 C1 Editor di testo<br />
7.3 awk<br />
awk 29 è un vero e proprio linguaggio di programmazione. Lo scopo del linguaggio è quello<br />
di analizzare e processare file di testo e di sperimentare gli algoritmi durante la fase di<br />
prototipizzazione.<br />
Noi non saremo particolarmente rigorosi ed esaustivi nella presentazione del linguaggio,<br />
dato che i tre inventori hanno scritto addirittura un intero libro. 30 È quindi evidente che<br />
è al di sopra del nostro testo spingersi così avanti. Ci limiteremo alla sintassi elementare<br />
e ai suoi usi più immediati, giusto per stimolarvi l’acquolina.<br />
La sintassi di awk può essere una delle due seguenti:<br />
Le opzioni sono:<br />
awk [-W option] [-F value] [-v var=value] [--]<br />
’program text’ [file ...]<br />
awk [-W option] [-F value] [-v var=value]<br />
[-f program-file] [--] [file ...]<br />
Opzione Significato<br />
-F sep Imposta il separatore di campo a sep<br />
-f file Il testo del programma è letto dal file file . Sono ammesse più opzioni -f<br />
-v var=valore Assegna valore alla variabile var<br />
– Indica la fine delle opzioni<br />
Un esempio elementare: recuperare la shell dal passwd 7.3.1<br />
Diciamo che vogliamo sapere quale shell utilizzi un utente del sistema. I passaggi logici<br />
da fare sono:<br />
• Trovare l’utente nel file /etc/passwd (grep)<br />
• Estrarre il settimo campo (shell) e stamparlo a video<br />
Abbiamo così modo di sperimentarci con le pipe che abbiamo già visto in precedenza.<br />
Cominciamo a recuperare il nostro utente:<br />
$ grep root /etc/passwd<br />
root:x:0:0:root:/root:/bin/bash<br />
$<br />
Bene. Ora estraiamo il settimo campo. Dobbiamo prima di tutto specificare ad awk<br />
quale separatore di campo usare. Useremo “-f :”. Quindi il corpo del programma.<br />
Anticipando quanto vedremo nella sezione successiva, diciamo che il “programma” da<br />
utilizzare è print $7.<br />
Quindi:<br />
29 Il nome deriva da Aho, Kernighan e Weinberger, i tre creatori del linguaggio<br />
30 Aho, Kernighan e Weinberger, The AWK Programming Language, Addison-Wesley Publishing,<br />
1988