GNU/Linux >> Linux Esercitazione >  >> Linux

Esercitazione sui comandi Awk Linux/UNIX con esempi

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.


Linux
  1. Linux expand Command Tutorial per principianti (con esempi)

  2. Tutorial sui comandi di Linux factor per principianti (con esempi)

  3. Linux yes Command Tutorial per principianti (con esempi)

  4. Esercitazione sui comandi nproc Linux per principianti (con esempi)

  5. Linux tac Command Tutorial per principianti (con esempi)

Tutorial sui comandi di test di Linux per principianti (con esempi)

Esercitazione sui comandi zforce di Linux con esempi

Linux tr Command Tutorial per principianti (con esempi)

15 Comando Linux ps con esempi

Comando awk di Linux con 10 esempi

Tutorial comando trova Linux (con esempi)