GNU/Linux >> Linux Esercitazione >  >> Linux

Tutorial Awk:Comprendi le variabili Awk con 3 esempi pratici

Questo articolo fa parte della serie Awk Tutorial ed esempi in corso. Come qualsiasi altro linguaggio di programmazione, anche Awk ha variabili definite dall'utente e variabili integrate.

In questo articolo esaminiamo come definire e utilizzare le variabili awk .

  • Le variabili Awk devono iniziare con la lettera, seguita da quella che può essere composta da caratteri alfanumerici o underscore.
  • Le parole chiave non possono essere utilizzate come variabile awk
  • Awk non supporta la dichiarazione di variabili come altri linguaggi di programmazione
  • È sempre meglio inizializzare le variabili awk nella sezione BEGIN, che verrà eseguita solo una volta all'inizio.
  • Non ci sono tipi di dati in Awk. Se una variabile awk deve essere trattata come un numero o come una stringa dipende dal contesto in cui viene utilizzata.

Ora esaminiamo alcuni semplici esempi per imparare a utilizzare le variabili awk definite dall'utente.

Esempio 1 Awk:fatturazione per i libri

In questo esempio, il file di input bookdetails.txt contiene record con campi:numero articolo, nome libro, quantità e tariffa per libro.

$ cat bookdetails.txt
1 Linux-programming 2 450
2 Advanced-Linux 3 300
3 Computer-Networks 4 400
4 OOAD&UML 3 450
5 Java2 5 200

Ora il seguente script Awk legge ed elabora il file bookdetails.txt sopra e genera un rapporto che mostra — tariffa di ogni libro venduto e importo totale per tutti i libri venduti.

Finora abbiamo visto Awk legge i comandi dalla riga di comando, ma Awk può anche leggere i comandi dal file usando l'opzione -f.

Syntax:

$ awk -f script-filename inputfilename

Ora il nostro script Awk per il calcolo della fatturazione per i libri è riportato di seguito.

$ cat book-calculation.awk
BEGIN {
	total=0;
}
{
	itemno=$1;
	book=$2;
	bookamount=$3*$4;
	total=total+bookamount;
	print itemno," ", book,"\t","$"bookamount;
}
END {
	print "Total Amount = $"total;
}

Nello script sopra,

  • Awk sezione INIZIO inizializza la variabile total. itemno, total, book, bookamount sono variabili awk definite dall'utente.
  • Nell'Awk Azione sezione, Quantità*prezzo del libro verrà memorizzato in una variabile denominata importo del libro. Ogni importo del libro verrà aggiunto al totale.
  • Finalmente nell'Awk END sezione, la variabile totale avrà l'importo totale.

Ora esegui lo script book-calculation.awk per generare il rapporto che mostra ogni tariffa del libro e importo totale come mostrato di seguito.

$ awk -f book-calculation.awk bookdetails.txt
1   Linux-programming 	 $900
2   Advanced-Linux 	 $900
3   Computer-Networks 	 $1600
4   OOAD&UML 	 $1350
5   Java2 	 $1000
Total Amount = $5750

Esempio Awk 2. Calcolo del voto dello studente

In questo esempio, crea un file di input "student-marks.txt" con il seguente contenuto:nome dello studente, numero di ruolo, punteggio Test1, punteggio Test2 e punteggio Test3.

$ cat student-marks.txt
Jones 2143 78 84 77
Gondrol 2321 56 58 45
RinRao 2122 38 37 65
Edwin 2537 78 67 45
Dayan 2415 30 47 20

Ora il seguente script Awk calcolerà e genererà il rapporto per mostrare i voti medi di ogni studente, la media dei punteggi Test1, Test2 e Test3.

$cat student.awk

BEGIN {
	test1=0;
	test2=0;
	test3=0;
	print "Name\tRollNo\t Average Score";

}
{
	total=$3+$4+$5;
	test1=test1+$3;
	test2=test2+$4;
	test3=test3+$5;
	print $1"\t"$2"\t",total/3;
}
END{
	print "Average of Test1="test1/NR;
	print "Average of Test2="test2/NR;
	print "Average of Test3="test3/NR;

}

Nello script Awk sopra,

  • In Awk BEGIN sezione tutte le variabili awk sono inizializzate a zero. test1, test2, test3 e total sono variabili awk definite dall'utente.
  • Nella AZIONE Awk sezione, $3, $4, $5 sono rispettivamente i punteggi del Test1, del Test2 e del Test3. la variabile totale è l'aggiunta di 3 punteggi del test per ogni studente. La variabile awk test1, test2 e test3 ha i punteggi totali di ogni test corrispondente.
  • Quindi in Awk END sezione, dividendo il totale di ogni test per il numero totale di record (es. Studente) otterrai il punteggio medio. NR è una variabile incorporata di Awk che fornisce il numero totale di record in input.

Esempio Awk 3. Report HTML per i dettagli degli studenti

Nei due esempi precedenti, abbiamo visto la variabile awk che ha numeri come valori. Questo esempio mostra lo script awk per generare il rapporto html per il nome degli studenti e il loro numero di ruolo.

$ cat string.awk
BEGIN{
title="AWK";
print "<html>\n<title>"title"</title><body bgcolor=\"#ffffff\">\n<table border=1><th  colspan=2 align=centre>Student Details</th>";

}
{
name=$1;
rollno=$2;
print "<tr><td>"name"</td><td>"rollno"</td></tr>";
   
}
END {
    print "</table></body>\n</html>";
}

Usa lo stesso file di input student-marks.txt che abbiamo creato nell'esempio sopra.

$ awk -f string.awk student-marks.txt
<html>
<title>AWK</title><body bgcolor="#ffffff">
<table border=1><th  colspan=2 align=centre>Student Details</th>
<tr><td>Jones</td><td>2143</td></tr>
<tr><td>Gondrol</td><td>2321</td></tr>
<tr><td>RinRao</td><td>2122</td></tr>
<tr><td>Edwin</td><td>2537</td></tr>
<tr><td>Dayan</td><td>2415</td></tr>
</table></body>
</html>

Possiamo memorizzare l'output sopra, che fornisce la seguente tabella html. Nello script precedente, le variabili chiamate name e rollno sono variabili di tipo stringa, perché vengono utilizzate nel contesto di una stringa.

Student Details
Jones 2143
Gondrol 2321
RinRao 2122
Edwin 2537
Dayan 2415

Lettura consigliata

Sed e Awk 101 Hacks, di Ramesh Natarajan . Trascorro diverse ore al giorno in ambiente UNIX/Linux a occuparmi di file di testo (dati, configurazione e file di registro). Uso Sed e Awk per tutto il mio lavoro di manipolazione del testo. Sulla base della mia esperienza con Sed e Awk, ho scritto Sed and Awk 101 Hacks eBook che contiene 101 esempi pratici su varie funzionalità avanzate di Sed e Awk che miglioreranno la tua vita UNIX / Linux. Anche se usi Sed e Awk da diversi anni e non hai letto questo libro, per favore fatti un favore e leggi questo libro. Rimarrai stupito dalle capacità delle utility Sed e Awk.


Linux
  1. Esercitazione introduttiva di Awk – 7 Esempi di stampa di Awk

  2. Gli array AWK spiegati con 5 esempi pratici

  3. Esercitazione sullo stato di uscita di Bash Shell con esempi pratici

  4. Tutorial di riferimento e dereferenziazione degli array Perl con esempi pratici

  5. Comando Eco con esempi pratici

10 esempi pratici di regex con grep

Tutorial Unix Sed:operazione su file multilinea con 6 esempi pratici

Bash Scripting Introduzione Tutorial con 5 esempi pratici

Esercitazione sulle variabili Bash:6 esempi pratici di variabili globali e locali Bash

The Ultimate Tar Command Tutorial con 10 esempi pratici

Tutorial sulle funzioni di Bash Shell con 6 esempi pratici