GNU/Linux >> Linux Esercitazione >  >> Linux

4 Esempi di istruzioni Awk If ( if, if else, if else if, :? )

Questo articolo fa parte della serie Awk Tutorial Examples in corso. Nei nostri precedenti articoli su awk, abbiamo discusso di awk print, variabili definite dall'utente awk, variabili integrate awk e operatori awk.

In questo tutorial awk, esaminiamo le dichiarazioni awk conditional if con esempi pratici.

Awk supporta molte istruzioni condizionali per controllare il flusso del programma. La maggior parte della sintassi dell'istruzione condizionale Awk è simile al linguaggio di programmazione "C".

Normalmente l'istruzione condizionale controlla la condizione, prima di eseguire qualsiasi azione. Se la condizione è vera, le azioni vengono eseguite. Allo stesso modo è possibile eseguire un'azione se la condizione è falsa.

L'istruzione condizionale inizia con la parola chiave chiamata "se". Awk supporta due diversi tipi di istruzione if.

  1. Dichiarazione Awk Simple If
  2. Dichiarazione Awk If-Else
  3. Awk If-ElseIf-Ladder

Dichiarazione Awk Simple If

Azione singola: L'istruzione Simple If viene utilizzata per verificare le condizioni, se la condizione restituisce true, esegue le azioni corrispondenti.

Syntax:
if (conditional-expression)
	action
  • se è una parola chiave
  • espressione-condizionale – espressione per controllare le condizioni
  • azione:qualsiasi istruzione awk per eseguire un'azione.

Azione multipla: Se l'espressione condizionale restituisce true, verrà eseguita l'azione. Se è necessario eseguire più di un'azione, le azioni devono essere racchiuse tra parentesi graffe, separandole in una nuova riga o punto e virgola come mostrato di seguito.

Syntax:
if (conditional-expression)
{
	action1;
	action2;
}

Se la condizione è vera, tutte le azioni racchiuse tra parentesi graffe verranno eseguite nell'ordine indicato. Dopo che tutte le azioni sono state eseguite, continua a eseguire le istruzioni successive.

Awk If Else Statement

Nella semplice istruzione awk If sopra, non esiste un insieme di azioni nel caso in cui la condizione sia falsa. Nell'istruzione awk If Else puoi fornire l'elenco delle azioni da eseguire se la condizione è falsa. Se la condizione restituisce true verrà eseguita l'azione 1, se la condizione è falsa verrà eseguita l'azione 2.

Syntax:
if (conditional-expression)
	action1
else
	action2

Awk ha anche un operatore condizionale, ovvero operatore ternario ( ?:) la cui caratteristica è simile a awk If Else Statement. Se l'espressione condizionale è vera, verrà eseguita l'azione1 e se l'espressione condizionale è falsa verrà eseguita l'azione2.

Syntax:

conditional-expression ? action1 : action2 ;

Awk If Else If ladder

if(conditional-expression1)
	action1;
else if(conditional-expression2)
	action2;
else if(conditional-expression3)
	action3;
	.
	.
else
	action n;
  • Se l'espressione-condizionale1 è vera, verrà eseguita l'azione1.
  • Se l'espressione-condizionale1 è falsa, verrà verificata l'espressione-condizionale2, se è vera, verrà eseguita l'azione2 e procederà in questo modo. L'ultima parte verrà eseguita se nessuna delle espressioni condizionali è vera.

Ora creiamo il file di input di esempio che contiene i voti dello studente.

$cat student-marks
Jones 2143 78 84 77
Gondrol 2321 56 58 45
RinRao 2122 38 37
Edwin 2537 87 97 95
Dayan 2415 30 47

1. Awk If Esempio:verifica che tutti i segni esistano

$ awk '{
if ($3 =="" || $4 == "" || $5 == "")
	print "Some score for the student",$1,"is missing";'
}' student-marks
Some score for the student RinRao is missing
Some score for the student Dayan is missing

$ 3, $ 4 e $ 5 sono i punteggi dei test dello studente. Se il punteggio del test è uguale a vuoto, genera il messaggio. || l'operatore deve verificare che uno qualsiasi dei segni non esista, dovrebbe avvisare.

2. Awk If Else Esempio:genera un rapporto Pass/Fail basato sui voti degli studenti in ciascuna materia

$ awk '{
if ($3 >=35 && $4 >= 35 && $5 >= 35)
	print $0,"=>","Pass";
else
	print $0,"=>","Fail";
}' student-marks
Jones 2143 78 84 77 => Pass
Gondrol 2321 56 58 45 => Pass
RinRao 2122 38 37 => Fail
Edwin 2537 87 97 95 => Pass
Dayan 2415 30 47 => Fail

La condizione per Pass è che tutti i punteggi del test devono essere maggiori o uguali a 35. Quindi tutti i punteggi dei test vengono controllati se maggiori di 35, quindi stampa l'intera riga e la stringa "Pass", altrimenti anche se uno qualsiasi dei il punteggio del test non soddisfa la condizione, stampa l'intera riga e stampa la stringa “Fail”.

3. Awk If Else If Esempio:trova la media e il voto per ogni studente

$ cat grade.awk
{
total=$3+$4+$5;
avg=total/3;
if ( avg >= 90 ) grade="A";
else if ( avg >= 80) grade ="B";
else if (avg >= 70) grade ="C";
else grade="D";

print $0,"=>",grade;
}
$ awk -f grade.awk student-marks
Jones 2143 78 84 77 => C
Gondrol 2321 56 58 45 => D
RinRao 2122 38 37 => D
Edwin 2537 87 97 95 => A
Dayan 2415 30 47 => D

Nello script awk sopra, la variabile chiamata 'avg' ha la media dei tre punteggi dei test. Se la media è maggiore o uguale a 90, il voto è A, oppure se la media è maggiore o uguale a 80 il voto è B, se la media è maggiore o uguale a 70, il voto è C. Oppure altrimenti il ​​voto è D.

4. Awk Ternary ( ?:) Esempio:concatena ogni 3 righe di input con una virgola.

$ awk 'ORS=NR%3?",":"\n"' student-marks
Jones 2143 78 84 77,Gondrol 2321 56 58 45,RinRao 2122 38 37
Edwin 2537 87 97 95,Dayan 2415 30 47,

Abbiamo discusso in precedenza della variabile incorporata awk ORS. Questa variabile viene aggiunta dopo ogni riga che ottiene l'output. In questo esempio, viene modificato ogni terza riga da una virgola a una nuova riga. Per le righe 1, 2 è una virgola, per la riga 3 è una nuova riga, per le righe 4, 5 è una virgola, per la riga 6 è una nuova riga, ecc.

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. Come utilizzare l'istruzione if else condizionali nello script Bash

  2. Bash Istruzione If-Else con esempi

  3. 4 Esempi di istruzioni Bash If ( If then fi, If then else fi, If elif else fi, Nested if )

  4. Esempi di comandi awk in Linux

  5. Bash/sh istruzione 'if else'

Bash if..else Statement

Python if..else Istruzione

Comando awk di Linux con 10 esempi

10 fantastici esempi di comandi Awk in Linux

Bash If Else Sintassi con esempi

Tutorial Regex per esempi di Linux (Sed e AWK).