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!
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 :
RispondiEliminaecho scriviquellochevuoi | awk '{ c=length } {split($0,a,""); for (i=1; i<=c; i++) print a[i]}'