I sistemi informatici sono sempre stati utilizzati per analizzare dati preziosi archiviati in semplici file di testo. A loro volta, i sistemi informatici stessi sono gestiti tramite file di registro. Ciò che è potenzialmente comune in queste due situazioni è che contengono una grande quantità di dati, che spesso deve essere ottimizzata prima di leggere effettivamente i dati; in caso contrario, è solo confusione.
Ad esempio, se stai leggendo alcuni dati disposti in forma tabellare, vuoi alcune colonne, non altre.
Questo requisito era terribile anche in passato e, di conseguenza, il progetto GNU possiede uno strumento straordinario che aiuta gli utenti a filtrare ed estrarre i dati per un'esperienza migliore. Quello strumento è AWK .
Cronologia
AWK è in realtà un linguaggio di programmazione dedicato all'elaborazione del testo. Viene utilizzato per l'estrazione dei dati in schemi specifici. È stato sviluppato negli anni '70 dai Bell Labs, da Alfred Aho, Peter Weinberger e Brian Kernighan (le iniziali dei loro cognomi hanno dato origine al nome). Lo sviluppo di awk non si è fermato qui. Una nuova versione è stata introdotta nel 1985, che ha apportato nuove modifiche al comando awk, inclusa la possibilità di gestire più flussi di input, espressioni regolari calcolate, funzioni definite dall'utente e molto altro! In breve, l'aggiornamento lo ha reso un linguaggio di programmazione più potente.
Awk ha un'implementazione diversa. Per garantire che ci sia un'implementazione adeguata che offra un approccio standard, Paul Rubin ha scritto gawk nel 1986. Ha funzionato bene con il nuovo awk.
A parte questo, nella versione System V del 1989, furono aggiunte nuove funzionalità. Gli sviluppatori hanno anche migliorato i suoi angoli bui, rendendo migliore l'utilizzo da parte di programmatori e utenti. L'ultimo cambiamento è avvenuto nel 1997 quando awk ha visto l'accesso alla rete, fornendo agli utenti la possibilità di risolvere i problemi da remoto.
L'ultima riscrittura è avvenuta nel 2011, quando John Haque ha riscritto gli interni di gawk.
Cose che puoi fare con AWK
A questo punto, dovrebbe essere in qualche modo chiaro di cosa è capace AWK. È un linguaggio di scripting generico che consente di gestire l'elaborazione del testo. Gli utenti avanzati possono utilizzarlo anche per analisi e report.
AWK non è come gli altri linguaggi di programmazione in quanto è basato sui dati, piuttosto che un linguaggio di programmazione procedurale. Ciò significa che puoi usarlo efficacemente per eseguire azioni contro l'input di testo. In breve, puoi usarlo per trasformare i dati, inserirli e anche inviarli come output standard.
In breve, puoi utilizzare AWK per eseguire semplici operazioni come dividere ogni riga di input in campi, scansionare un file riga per riga, eseguire una o più azioni sulle righe di corrispondenza e così via! Il comando awk è utile anche per i rapporti formattati sulle procedure e trasforma i file di dati. Inoltre, puoi anche accedere a costrutti di programmazione come condizionali e cicli, stringhe e operazioni aritmetiche e righe di output del formato.
Come funziona awk
In questa sezione impareremo come funziona awk. È importante sapere che awk ha implementazioni diverse. Per assicurarci di essere sulla stessa pagina, discuteremo e utilizzeremo l'implementazione GNU, che è popolarmente conosciuta come gawk. Nella maggior parte dei casi, gawk è collegato in modo simbolico all'interprete awk.
Per ottenere una buona comprensione, dobbiamo prima comprendere i record e i campi.
È noto che awk può elaborare flussi di testo e file di dati. Per elaborare i dati, l'input è suddiviso in campi e record. Per garantire che awk non venga sopraffatto, un record viene elaborato in qualsiasi momento fino al raggiungimento della fine dell'input. Inoltre, i record sono ulteriormente suddivisi in sezioni semplici utilizzando un separatore di record tramite caratteri. Inoltre, ogni record viene separato utilizzando caratteri di nuova riga. Ciò significa che ogni riga può essere definita come un record.
Puoi scegliere di impostare un nuovo separatore di record utilizzando la variabile RS.
Poi viene il separatore archiviato. Come al solito, ogni record ha campi e sono separati utilizzando il separatore di campo. Il separatore di campo può essere spazi bianchi, tabulazioni, caratteri di nuova riga e spazio. Inoltre, ogni campo è referenziato usando il simbolo $, mentre il numero del campo inizia con 1. Ciò significa che il primo campo può essere indicato come $1 mentre il secondo campo è indicato come $2. In questo modo, l'ennesimo campo può essere indicato come $nf.
Il programma awk
Il secondo aspetto di awk è il programma awk. Se vuoi lavorare con awk, devi scrivere un programma che consenta al comando di eseguire o elaborare il testo. Il programma awk offre molte funzionalità utilizzando regole e funzioni definite dall'utente. Le regole funzionano con una coppia di azioni o un pattern e le regole sono separate da punto e virgola o nuova riga.
Nel caso te lo stia chiedendo, un programma awk apparirà come di seguito.
pattern { action } pattern { action } ....
In breve, il programma awk funziona abbinando i record in base a schemi. Se il modello viene trovato nel record, lo elaborerà. In caso contrario, l'intero record viene abbinato per assicurarsi che qualcosa corrisponda in base alle regole.
Esempi di comando awk
Ora che abbiamo una buona comprensione del comando awk e di come funziona, è giunto il momento di dare un'occhiata ad alcuni esempi di comandi awk.
Se non hai mai usato awk prima, potresti voler sapere che awk può essere utilizzato con opzioni come di seguito:
awk options program file
Le opzioni che puoi utilizzare con awk includono quanto segue:
- – f file:viene utilizzato per specificare il file che contiene lo script awk
- -F fs:serve per specificare il separatore di file.
- -v var=value:Viene utilizzato per dichiarare una variabile.
Esempio 1:leggi gli script AWK
Uno dei modi più comuni per usare awk è leggere gli script. Come utente Linux, puoi creare uno script awk usando le virgolette singole.
Per farlo, devi digitare il seguente comando nel terminale.
$awk '{print "Welcome to Hello, World -- AWK tutorial"}'
Nell'esempio sopra, ciò che digiti, verrà restituito allo schermo stesso. Il comando continuerà a essere eseguito finché non lo termini premendo CTRL + D.
Esempio 2:utilizzo di più comandi
Un altro uso comune di awk è usare più comandi. Come utente, potresti voler combinare due comandi awk in uno per ottenere il risultato desiderato. In questo esempio, produrremo una stringa e quindi sostituiremo la seconda parola nella stringa con il nuovo input.
$echo "Hello World" | awk '{$2 = "Universe; print $0"}'
Nell'esempio sopra, abbiamo prima ripetuto "Hello, World" al terminale. Successivamente, abbiamo concatenato un altro comando awk in cui abbiamo sostituito la seconda parola con Universe, quindi abbiamo infine prodotto la stringa, che è Hello Universe.
Esempio 3:utilizzo della variabile
Le variabili consentono di memorizzare informazioni e accedervi. Se hai già usato linguaggi di programmazione, sicuramente li conosci. Nel caso di awk, lo usi per elaborare file di testo. Utilizzando le variabili, puoi accedere a determinati campi di dati all'interno del file proprio come di seguito.
A tale scopo, abbiamo creato un nuovo file di testo, mynewfile, in cui inseriamo alcune righe casuali ma belle.
Successivamente, devi eseguire il comando, come mostrato di seguito.
awk '{print $1}' mynewfile
Come puoi vedere, emette quella particolare variabile che mostra quel campo dal file. Inoltre, dovresti vedere l'errore che ho commesso.
Esempio 4:preelaborazione AWK
Con il comando awk, puoi aggiungere la preelaborazione. Per farlo, devi utilizzare la parola chiave BEGIN.
Se stai leggendo attentamente, abbiamo creato un nuovo file sopra. Proviamo a utilizzare la preelaborazione awk per mostrare il contenuto del file.
Il comando è il seguente.
awk 'awk BEGIN {print "The content of the file:"} > {print $0}' , mynewfile
Lo screenshot di esempio sopra non è corretto. Ho usato "Begin" invece di "BEGIN", motivo per cui l'istruzione print non viene eseguita. Lascio a te questo per provare e vedere come va il tuo risultato!
Esempio 5:lettura di script da file
Questo è difficile. Qui puoi usare lo script awk per leggere un file.
Creiamo un nuovo script che contiene quanto segue.
{print $1 "universe starts at " $6"}
Abbiamo salvato il file come newscript.
Ora, esegui il seguente comando sul terminale.
$awk -F: -f newscript /etc/passwd
Affascinante, vero!
Esempio 6:post-elaborazione AWK
Successivamente, diamo un'occhiata alla post-elaborazione di AWK. Funziona in modo simile alla pre-elaborazione, ma questa volta la post-elaborazione utilizza il comando END.
$ awk 'BEGIN {print "The file content starts now:"} > > {print $0} > > END {print "The File ends"}' mynewfile
Esempio 7:variabili definite dall'utente
Puoi anche utilizzare le variabili all'interno del comando awk senza utilizzare un numero o il simbolo del dollaro.
Di seguito è riportato un esempio.
$awk ' BEGIN{ test = "Welcome to FossLinux Awesome Linux Family" print test } '
Esempio 8:Funzioni integrate
I comandi awk sono utili anche con le loro funzioni integrate. Ad esempio, puoi utilizzare funzioni matematiche e anche funzioni String.
$ awk 'BEGIN {x - "fossLinux"; print toupper(x)}'
$ awk 'BEGIN {x=exp(35); print x}'
Esempio 9:formattazione della stampa
Puoi anche formattare la funzione printf fornita con awk. Ci sono molti modificatori che puoi usare. Ad esempio, puoi usare c per stampare come una stringa; puoi anche usare d per un valore intero e così via.
$ awk 'BEGIN { x = 200 * 200 printf "The result is: %e\n", x }'
Esempio 10:comandi strutturati
Puoi anche usare comandi strutturati come if, else, while o for loop. Vediamo l'esempio seguente per il comando if.
$ awk '{if ($1 > 20) print $2}' mynewfile
Conclusione
Questo ci porta alla fine del nostro tutorial sui comandi awk. Quindi, l'hai trovato utile e lo utilizzerai per il tuo lavoro? Commenta di seguito e facci sapere.