[bglug] script per calcoli

Riccardo Mottola multix@ngi.it
Ven 20 Feb 2004 09:20:45 CET


CIao,

on 2/15/04 12:07 PM, fralonga at fralonga@inwind.it wrote:
> Problema: - Dato un file di testo contenente una colonna di numeri Dare e una
> colonna di numeri Avere (esempio un estratto conto),  come posso ottenere i
> saldi per ogni operazione o - perlomeno - il saldo finale?
> Attualmente utilizzo un  foglio di calcolo e con una
> formula e un  po di copia e incolla si esegue il tutto.
> Mi piacerebbe invece poter utilizzare uno script che mi esegue gli stessi
> calcoli in un semplice e funzionale file di testo.
probabilmente ti va bene lavorare con AWK

> Qualcuno mi sa dare qualche buona idea??
> Actung....  ho molta buona volontà ma poca esperieza, quindi, per favore,
> non parlate ;-) "politichese".
awk e' un linguaggio semplicissimo e probabilmente un porblema come il tuo
si risolve con 5-10 righe di programma a dir tanto. Forse una, a volte ci si
riesce... Purtroppo me lo sono un po' scordato :) Dovrei fare quindi due
prove e rileggermi un po' il manuale. Ci sono in giro comunque degli ottimi
resource centers.

Essenzialmente awk ragiona per righe, gli si definisce un separatore
(normalmente gli spazi le tabulazioni o le virgole... quello predfeinito
credo sia il tab). I programma awk poi ragiona per righe, ad ogni riga
assegna porgressivamente il valroe di una variabile come la trova in una
riga.
Quindi ad esempio per scambiare le colone di due elementi... si scrive il
programma di una riga. O per sosostiure due colonne con la loro somma.
AWK ha poi anche modo di lavorare da una riga all'altra, quindi appunto per
fare la somma. All'inizio e alla fine di un porgramma AWK si possono mettere
un "INIZIO" e una "FINE, ossia codice che viene eseguito non riga per riga
ma prima e dopo, quindi utile ad esempio per inizializzare qualcosa e poi
lavorare alla fine (ad es la somma delle colonne come nel tuo caso).

awk e' piccolissimo, portabile, efficiente, un po' inusuale.

Ricordo che AWK sta per Aho, Wheinberger e Kernighan. SI' niente meno che il
medesimo Kernighan che ha dato vita al C assieme a Ritchie, quindi non e' un
linguaggio dalle origini blasonate. SU linux e bsd facilmente trovi nawk
(new AWK).

-Ric



Maggiori informazioni sulla lista bglug