venerdì 1 agosto 2014

La funzione split() [AWK]

Salve!

Oggi vediamo la funzione split(), che è veramente semplice semplice.

La funzione split() ci dà la possibilità di convertire automaticamente una stringa in un array. Come?

Attraverso la seguente sintassi: 

split(stringa, array, separatore)

il primo parametro è la stringa da suddividere; il secondo è l'array da creare, il terzo è il separatore.

Facciamo qualche esempio:

awk 'BEGIN{split("luigi", array, ""); print array[1]}'

Per farla breve, è come se scrivessi

a[1] = l
a[2] = u
a[3] = i
a[4] = g
a[5] = i

(Il separatore di campo in questo caso è "", cioè nessuno spazio tra i campi.)

Infatti


echo luigi | awk '{split($0,a,"");for (i=1;i<=5;i++) print a[i]}'


Altro esempio. In questo caso il separatore di campo è "-".

echo l-u-i-g-i | awk '{split($0,a,"-");print a[2] a[5]}'


Ancora

echo 12345 | awk '{split($0,a,"");print a[2]+a[3]}'

echo 12345 | awk '{split($0,a,""); for (i in a) sum += a[i]; print sum}'

echo 12345 | awk '{split($0,a,""); for (i=1; i<=5; i++) print a[i]}'


 Semplice, no? ;) In caso di dubbi, non esitate a lasciare un commento.

Vi ricordo che l'indice della rubrica "Un po' di awk" lo trovate qui.

Alla prossima! 

1 commento:

  1. Ciao Luigi innanzi tutto grazie !! Sono un fan di awk e sono passato per caso quindi posto anche questo comando per coloro che vogliono evitare di contare la lunghezza della stringa da stampare dopo la conversione :
    echo scriviquellochevuoi | awk '{ c=length } {split($0,a,""); for (i=1; i<=c; i++) print a[i]}'

    RispondiElimina