[Linux-Biella] Sempre script...

Simone Caldana linux@bilug.linux.it
Mon, 09 Jun 2003 15:22:13 +0200


CIARROCCHI Paolo wrote:
> From: Simone Caldana [mailto:simone@caldana.org]
> 
>>Usa nawk o gawk. io ho fatto man awk su linux, ed e' gawk. su solaris 
>>awk e basta e' molto limitato, probabilmente non ha l'operatore ?:
> 
> 
> Ah... mi sembrava di aver gia' provato con nawk, 
> ma evidentemente mi sbaglio.
> 
> Ora ho provato cosi:
> 
> bash-2.05$ cat maxMOMT.awk
> BEGIN{
>         FS=";";
>         minmt=0;
>         maxmt=0;
>         minmo=0;
>         maxmt=0;
> }
> {
>         minmo=(minmo<$3)?minmo:$3;
>         maxmo=(maxmo>$3)?maxmo:$3;
>         minmt=(minmt<$4)?minmt:$4;
>         maxmt=(maxmt>$4)?maxmt:$4;
> }
> END{
>         print "MO: "  minmo maxmo "\n" "MT: " minmt maxmt
> }
> 
> bash-2.05$ nawk -f maxMOMT.awk <prova.txt
> MO: 05620
> MT: 08067
> 
> Evvai!!! Funziona!!!!
> 
> A me interessa solo il max, percio' ora cancello la parte 
> relativa al minimo, che pero' cosi come e' fatta non puo' funzionare.
> 
> minmt=0
> Poi  minmt=(minmt<$4)?minmt:$4 -> minmt viene sempre comparato con 0,
> percio' il risultato finale e' sempre 0.

c'era qualcosa che non mi convinceva, infatti :)
aggiungi dopo il blocco begin:

NR==1{minmo=$3;minmt=$4;}

> Una ultima cosa, io vorrei stampare il campo $2 che corrisponde al maxmo e maxmt.
> Esiste un modo piu' semplice di grep|cut dei due massimi ?

memorizzi il campo insieme al maxmt attuale. a questoi punto conviene un 
if invece dell'operatore ternario.

-- 
. Simone Caldana: Pear Minister of Foreign Affairs     .
. Aiming to become a vi mug - currently jumping around .
. simone@caldana.org         http://simone.caldana.org .