AWK – Basic Examples (Italiano)

AWK – Basic Examples (Italiano)

Advertisements

Questo capitolo descrive diversi comandi AWK utili e i loro esempi appropriati. Si consideri un file di testo segna.txt da elaborare con il seguente contenuto-

1) Amit Physics 802) Rahul Maths 903) Shyam Biology 874) Kedar English 855) Hari History 89

Colonna o campo di stampa

È possibile indicare a AWK di stampare solo determinate colonne dal campo di input., L’esempio seguente lo dimostra −

Esempio

$ awk '{print $3 "\t" $4}' marks.txt

Eseguendo questo codice, si ottiene il seguente risultato –

Output

Physics 80Maths 90Biology 87English 85History 89

Nei segni del file.txt, la terza colonna contiene il nome del soggetto e la quarta colonna contiene i segni ottenuti in un particolare oggetto. Stampiamo queste due colonne usando il comando AWK print. Nell’esempio precedente, $3 e 4 4 rappresentano rispettivamente il terzo e il quarto campo dal record di input.

Stampa di tutte le linee

Per impostazione predefinita, AWK stampa tutte le linee che corrispondono al modello.,

Esempio

$ awk '/a/ {print $0}' marks.txt

Eseguendo questo codice, si ottiene il seguente risultato:

Output

2) Rahul Maths 903) Shyam Biology 874) Kedar English 855) Hari History 89

Nell’esempio precedente, stiamo cercando il modello di modulo a. Quando una corrispondenza di pattern ha esito positivo, esegue un comando dal blocco body. In assenza di un blocco del corpo, viene eseguita un’azione predefinita che stampa il record. Quindi, il seguente comando produce lo stesso risultato −

Esempio

$ awk '/a/' marks.txt

Stampa colonne per Pattern

Quando una corrispondenza di pattern ha esito positivo, AWK stampa l’intero record per impostazione predefinita., Ma puoi istruire AWK a stampare solo determinati campi. Ad esempio, il seguente esempio stampa il terzo e il quarto campo quando una corrispondenza di pattern ha esito positivo.

Esempio

$ awk '/a/ {print $3 "\t" $4}' marks.txt

Eseguendo questo codice, si ottiene il seguente risultato:

Output

Maths 90Biology 87English 85History 89

Stampa colonna in qualsiasi ordine

È possibile stampare colonne in qualsiasi ordine. Ad esempio, il seguente esempio stampa la quarta colonna seguita dalla terza colonna.,

Esempio

$ awk '/a/ {print $4 "\t" $3}' marks.txt

Eseguendo il codice precedente, si ottiene il seguente risultato:

Output

90 Maths87 Biology85 English89 History

Conteggio e stampa di pattern abbinati

Vediamo un esempio in cui è possibile contare e stampare il numero di righe per le quali è riuscita una corrispondenza di pattern.

Esempio

$ awk '/a/{++cnt} END {print "Count = ", cnt}' marks.txt

Eseguendo questo codice, si ottiene il seguente risultato −

Output

Count = 4

In questo esempio, incrementiamo il valore del contatore quando una corrispondenza di pattern ha esito positivo e stampiamo questo valore nel blocco FINALE., Si noti che, a differenza di altri linguaggi di programmazione, non è necessario dichiarare una variabile prima di utilizzarla.

Stampa di righe con più di 18 caratteri

Stampiamo solo quelle righe che contengono più di 18 caratteri.

Esempio

$ awk 'length($0) > 18' marks.txt

Eseguendo questo codice, si ottiene il seguente risultato −

Output

3) Shyam Biology 874) Kedar English 85

AWK fornisce una funzione di lunghezza incorporata che restituisce la lunghezza della stringa. La variabile stores 0 memorizza l’intera riga e, in assenza di un blocco del corpo, viene eseguita l’azione predefinita, ovvero l’azione di stampa., Quindi, se una linea ha più di 18 caratteri, il confronto risulta vero e la linea viene stampata.

Pubblicità

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *