28.05.2013 Views

LOA HackLab - Autistici

LOA HackLab - Autistici

LOA HackLab - Autistici

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!