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.