Come usare il comando awk in shell : manuale sintassi ed esempi

APPUNTI, LINUX

Awk è uno strumento di frequente utilizzo nella programmazione shell, che mi trovo spesso a impiegare in combinazione con altri comandi per affrontare principalmente questioni di analisi di stringhe. Ho ritenuto quindi opportuno riprendere il manuale di awk e presentarlo nuovamente, arricchendolo con una serie di esempi pratici.

Cominciamo con una descrizione del comando, partendo dal manuale e dalla sua sintassi.

Ma cos’è precisamente awk e cosa permette di fare?

Awk è più di un semplice comando: si tratta di un linguaggio dedicato alla scansione e all’elaborazione di modelli testuali.

Per esempi su come può essere usato vi consiglio di leggere questo articolo che ho scritto di recente.

Di seguito vi riporto il man che può esser usato come base di partenza per comprendere le potenzialità dello strumento.

SINTASSI

       awk [ -F sepstring ] [ -v assegnazione ] ... program  [ argomento ... ]

       awk [ -F sepstring ] -f progfile  [ -f progfile ] ... [ -v assegnazione ] ...
             [ argomento ... ]

DESCRIZIONE

Awk è un comando shell che permette l’esecuzione di sequenze di istruzioni scritte nel suo stesso linguaggio. Pertanto, è corretto considerarlo un linguaggio di programmazione, specificamente orientato alla manipolazione di dati testuali.

Per capire meglio il suo funzionamento, esploriamo la sua struttura così come delineata nel manuale di Linux, fornendo alcune definizioni chiave:

  • Awk processa dati testuali, provenienti sia da file che da flussi.
  • Gli input dati vengono suddivisi in record e campi.
  • Awk lavora su un record per volta, fino al termine dell’input.
  • I record sono distinti tra loro da un carattere noto come separatore di record.
  • Il separatore di record di default è il carattere di nuova linea, il che implica che ogni riga nei dati di testo corrisponde a un record.
  • È possibile stabilire un nuovo separatore di record utilizzando la variabile RS.
  • Ogni record è composto da campi separati dal separatore di campo. Di default, i campi sono distinti da uno spazio, che può comprendere uno o più caratteri tab, spazio e nuova riga.
  • I campi in ogni record sono identificati dal simbolo del dollaro ($) seguito dal numero del campo, il quale inizia da 1.
  • Il primo campo è rappresentato con $1, il secondo con $2 e così via. L’ultimo campo può essere indicato anche utilizzando la variabile speciale $NF.
  • Per fare riferimento all’intero record si utilizza $0.

OPZIONI

       Sono supportate le seguenti opzioni:

       -F sepstring
                 Definisce il separatore del campo di input. Questa opzione è
                 equivalente a:

                     -v FS=sepstring

                 tranne che se -F sepstring e -v FS=sepstring sono
                 entrambi utilizzati; in tak caso non è specificato se l' assegnazione FS
                 risultante da -F sepstring viene elaborata nel comando
                 per ordine di riga o viene elaborato dopo l'ultimo -v 
                 FS=sepstring. 

       -f progfile 
                 Specifica il percorso del file progfile contenente un
                 programma awk. Un percorso definito come  '-' denota lo
                 standard inpu.

       -v assegnazione 
                 L'applicazione garantisce che l' argomento di assegnazione 
                 sia nella stessa forma di un operando di assegnazione.
                 L'assegnazione di una variabile specificata deve avvenire prima di
                 eseguire il programma awk , comprese le azioni
                 associate ai modelli BEGIN (se presenti).

OPERANDI ED OPERATORI

      Sono supportati i seguenti operandi:

       program   Se non viene specificata alcuna opzione -f , il primo operando di awk 
                 sarà il testo del programma awk . L'applicazione
                 interpreta l' operando programma come argomento singolo ad awk. 
                 Se il testo non termina con un <newline>, awk
                 interpreterà il testo come se ci fosse.

       argomento Uno dei seguenti tipi di argomento può essere
                 utilizzato anche insieme:

                 file      Indica il percorso di un file che contiene l'input
                           da legger Se non sono specificati operandi di file o se un operando di file
                           è '-' , sarà utilizzato lo standard input.

                 assignment
                           Un operando che inizia con un <underscore>
                           o un qualunque carattere alfabetico del
                           set di caratteri (vedi tabella in Base
                           Volume delle definizioni di POSIX.1-2017, Sezione 
                           6.1 , Portable Character Set ), seguito da un
                           sequenza di caratteri di sottolineatura, cifre e
                           alfabetici dal set di caratteri portatile,
                           seguito dal carattere '='  indica
                           una variabile di  assignment piuttosto che un percorso.
                           I caratteri prima di '=' rappresentano il
                           nome di una variabile awk ; se quel nome è una
                           parola riservata awk, il comportamento
                           è indefinito. 

 

Se vuoi farmi qualche richiesta o contattarmi per un aiuto riempi il seguente form

    Comments