Awk è un linguaggio di scripting utilizzato per l'elaborazione o l'analisi dei file di testo. Oppure possiamo dire che il comando awk viene utilizzato principalmente per raggruppare i dati in base a una colonna o un campo o su un insieme di colonne. Principalmente viene utilizzato per riportare i dati in modo utile. Utilizza anche Begin e End Blocks per elaborare i dati.
AWK sta per "Aho, Weinberger e Kernighan"
In questo tutorial impareremo il comando awk con esempi pratici.
Sintassi di awk
# awk 'pattern {action}' input-file> output-file
Prendiamo un file di input con i seguenti dati
$ cat awk_file Name,Marks,Max Marks Ram,200,1000 Shyam,500,1000 Ghyansham,1000 Abharam,800,1000 Hari,600,1000 Ram,400,1000
Ora, approfondiamo gli esempi pratici del comando awk.
1) Stampa tutte le righe da un file
Per impostazione predefinita, awk stampa tutte le righe di un file, quindi per stampare ogni riga del file creato sopra usa il comando seguente:
$ awk '{print;}' awk_file Name,Marks,Max Marks Ram,200,1000 Shyam,500,1000 Ghyansham,1000 Abharam,800,1000 Hari,600,1000 Ram,400,1000
Nota: Nel comando awk '{print;}' viene utilizzato per stampare tutti i campi insieme ai loro valori.
2) Stampa solo campi specifici come 2° e 3°
Nel comando awk, utilizziamo il simbolo $ (dollaro) seguito dal numero di campo per stampare i valori di campo. Nell'esempio seguente, stiamo stampando il campo 2 (cioè Marks) e il campo 3 (cioè Max Marks)
$ awk -F "," '{print $2, $3;}' awk_file Marks Max Marks 200 1000 500 1000 1000 800 1000 600 1000 400 1000
Nel comando precedente abbiamo utilizzato l'opzione -F "", che specifica che la virgola (,) è il separatore di campo nel file.
3) Stampa le linee che corrispondono al motivo
Voglio stampare le righe che contengono la parola "Hari &Ram", esegui
$ awk '/Hari|Ram/' awk_file Ram,200,1000 Hari,600,1000 Ram,400,1000
4) Come troviamo i valori univoci nella prima colonna del nome
Per stampare valori univoci dalla prima colonna, esegui sotto il comando awk
$ awk -F, '{a[$1];}END{for (i in a)print i;}' awk_file Abharam Hari Name Ghyansham Ram Shyam
5) Come trovare la somma dei dati inseriti in una determinata colonna
Nel comando awk è anche possibile eseguire alcune operazioni aritmetiche basate sulla ricerca, la sintassi è mostrata di seguito
$ awk -F, '$1==”Elemento1″{x+=$2;}END{stampa x}' awk_file
Nell'esempio seguente, cerchiamo Ram e poi aggiungiamo i valori del 2° campo per Ram word.
$ awk -F, '$1=="Ram"{x+=$2;}END{print x}' awk_file 600
6) Come trovare il totale di tutti i numeri in una colonna
Nel comando awk, possiamo anche calcolare la somma di tutti i numeri in una colonna di un file. Nell'esempio seguente stiamo calcolando la somma di tutti i numeri della 2a e 3a colonna.
$ awk -F"," '{x+=$2}END{print x}' awk_file 3500 $ awk -F"," '{x+=$3}END{print x}' awk_file 5000
7) Come trovare la somma dei record dei singoli gruppi
Ad esempio, se consideriamo la prima colonna, possiamo fare la somma per la prima colonna in base agli elementi
$ awk -F, '{a[$1]+=$2;}END{for(i in a)print i", "a[i];}' awk_file Abharam, 800 Hari, 600 Name, 0 Ghyansham, 1000 Ram, 600 Shyam, 500
8) Trova la somma di tutte le voci di colonne specifiche e aggiungila alla fine del file
Come abbiamo già discusso che il comando awk può fare la somma di tutti i numeri di una colonna, quindi per aggiungere la somma della colonna 2 e della colonna 3 alla fine del file, esegui
$ awk -F"," '{x+=$2;y+=$3;print}END{print "Total,"x,y}' awk_file Name,Marks,Max Marks Ram,200,1000 Shyam,500,1000 Ghyansham,1000 Abharam,800,1000 Hari,600,1000 Ram,400,1000 Total,3500 5000
9) Come trovare il conteggio delle voci in ogni colonna in base alla prima colonna
$ awk -F, '{a[$1]++;}END{for (i in a)print i, a[i];}' awk_file Abharam 1 Hari 1 Name 1 Ghyansham 1 Ram 2 Shyam 1
10) Come stampare solo il primo record di ogni gruppo
Per stampare solo il primo di ogni gruppo, esegui sotto il comando awk
$ awk -F, '!a[$1]++' awk_file Name,Marks,Max Marks Ram,200,1000 Shyam,500,1000 Ghyansham,1000 Abharam,800,1000 Hari,600,1000
Blocco inizio AWK
La sintassi per il blocco BEGIN è
$ awk ‘BEGIN{awk initializing code}{actual AWK code}’ Nome file
Creiamo un file di dati con i contenuti di seguito
11) Come popolare i nomi di ciascuna colonna insieme ai dati corrispondenti
$ awk 'BEGIN{print "Names\ttotal\tPPT\tDoc\txls"}{printf "%-s\t%d\t%d\t%d\t%d\n", $1,$2,$3,$4,$5}' datafile
12) Come modificare il separatore di campo
Come possiamo vedere, lo spazio è il separatore di campo nel file di dati, nell'esempio seguente cambieremo il separatore di campo da spazio a "|"
$ awk 'BEGIN{OFS="|"}{print $1,$2,$3,$4,$5}' datafile
Questo è tutto da questo tutorial, spero che tu l'abbia trovato informativo. Per favore condividi il tuo feedback e le tue domande nella sezione dei commenti qui sotto.