GNU/Linux >> Linux Esercitazione >  >> Linux

Preso nel giro? Awk While, Do While, For Loop, Break, Continue, Exit Esempi

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, operatori awk e istruzioni condizionali awk.

In questo articolo, esaminiamo il ciclo awk dichiarazioni – while, do while, for loop istruzioni , break, continue e exit insieme a 7 esempi pratici.

Le istruzioni di loop Awk vengono utilizzate per eseguire serie di azioni ancora e ancora in successione. Esegue ripetutamente un'istruzione finché la condizione è vera. Awk ha il numero di istruzioni di loop come il linguaggio di programmazione "C".

Awk While Loop

Syntax:

while(condition)
	actions
  • while è una parola chiave.
  • la condizione è un'espressione condizionale
  • le azioni sono il corpo del ciclo while che può avere una o più istruzioni. Se le azioni hanno più di un'istruzione, deve essere racchiusa tra parentesi graffe.

Come funziona?Awk mentre loop verifica prima la condizione, se la condizione è vera, quindi esegue l'elenco delle azioni. Dopo che l'esecuzione dell'azione è stata completata, la condizione viene nuovamente verificata e, se è vera, le azioni vengono eseguite di nuovo. Questo processo si ripete finché la condizione non diventa falsa. Se la condizione restituisce false nella prima iterazione, le azioni non vengono mai eseguite.

1. Esempio di ciclo Awk While:crea una stringa di una lunghezza specifica

$awk 'BEGIN { while (count++<50) string=string "x"; print string }'
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

L'esempio sopra utilizza il blocco speciale "BEGIN { }" che viene eseguito prima di ogni altra cosa in un programma Awk. In questo blocco, awk while loop aggiunge il carattere "x" alla variabile "stringa" 50 volte. count è una variabile che viene incrementata e verificata che sia inferiore a 50. Quindi, dopo 50 iterazioni, questa condizione diventa falsa.
Dopo che è stata ripetuta, la variabile "string" viene stampata. Poiché questo programma Awk non ha un corpo, si chiude dopo aver eseguito il blocco BEGIN.

Awk Do-While Loop

Come funziona?Awk Do while loop è chiamato loop controllato dall'uscita, mentre awk while loop è chiamato loop controllato dall'ingresso. Perché mentre loop verifica prima la condizione, poi decide di eseguire il corpo o meno. Ma l'awk do while loop esegue il corpo una volta, quindi ripete il corpo finché la condizione è vera.

Syntax:

do
action
while(condition)

Anche se la condizione è falsa, all'inizio l'azione viene eseguita almeno una volta.

2. Esempio di ciclo Awk Do While:stampa il messaggio almeno una volta

$ awk 'BEGIN{
count=1;
do
print "This gets printed at least once";
while(count!=1)
}'
This gets printed at least once

Nello script precedente, l'istruzione print, eseguita almeno una volta, se si utilizza l'istruzione while, prima la condizione verrà verificata dopo che il conteggio è stato inizializzato a 1, alla prima iterazione stessa la condizione sarà falsa, quindi l'istruzione print vincerà' t viene eseguito, ma in do while verrà eseguito il primo corpo, quindi esegue l'istruzione print.

Dichiarazione Awk For Loop

Awk per è la stessa di awk while loop, ma la sintassi è molto più facile da usare.

Syntax:

for(initialization;condition;increment/decrement)
actions

Come funziona?Awk per inizia eseguendo l'inizializzazione, quindi controlla la condizione, se la condizione è vera, esegue le azioni, quindi la incrementa o diminuisce. Quindi, finché la condizione è vera, esegue ripetutamente l'azione e quindi la incrementa/decrementa.

3. Esempio di ciclo Awk For. Stampa la somma dei campi in tutte le righe.

$ awk '{ for (i = 1; i <= NF; i++) total = total+$i }; END { print total }'
12 23 34 45 56
34 56 23 45 23
351

Inizialmente la variabile i viene inizializzata a 1, quindi controlla se i è minore o uguale al numero totale di campi, quindi continua ad aggiungere tutti i campi e infine l'aggiunta viene memorizzata nella variabile total. Nel blocco END basta stampare il totale della variabile.

4. Esempio Awk For Loop:stampa i campi in ordine inverso su ogni riga.

$ awk 'BEGIN{ORS="";}{ for (i=NF; i>0; i--) print $i," "; print "\n"; }' student-marks
77  84  78  2143  Jones
45  58  56  2321  Gondrol
37  38  2122  RinRao
95  97  87  2537  Edwin
47  30  2415  Dayan

Abbiamo discusso della variabile incorporata awk NF nel nostro articolo precedente. Dopo aver elaborato ogni riga, Awk imposta la variabile NF sul numero di campi trovati su quella riga.

Lo script sopra, esegue il ciclo in ordine inverso partendo da NF a 1 e restituisce i campi uno per uno. Inizia con il campo $NF, quindi $(NF-1),…, $1. Dopodiché stampa un carattere di nuova riga.

Ora vediamo alcune altre istruzioni che possono essere utilizzate con l'istruzione di ciclo.

Dichiarazione Awk Break

L'istruzione Break viene utilizzata per saltare fuori dal ciclo più interno (while, do-while e for) che lo racchiude.

5. Esempio di pausa Awk:script Awk per eseguire solo 10 iterazioni

$ awk 'BEGIN{while(1) print "forever"}'

Il ciclo awk while precedente stampa la stringa "per sempre" per sempre, perché la condizione non viene mai meno. Ora, se vuoi interrompere il ciclo dopo le prime 10 iterazioni, guarda lo script seguente.

$ awk 'BEGIN{
x=1;
while(1)
{
print "Iteration";
if ( x==10 )
break;
x++;
}}'
Iteration
Iteration
Iteration
Iteration
Iteration
Iteration
Iteration
Iteration
Iteration
Iteration

Nello script sopra, controlla il valore della variabile "x", se raggiunge 10 salta fuori dal ciclo usando l'istruzione break.

Dichiarazione Awk Continue

L'istruzione Continue salta il resto del corpo del ciclo facendo iniziare immediatamente il ciclo successivo attorno al ciclo.

6. Awk Continue Esempio:esegui il ciclo eccetto la 5a iterazione

$ awk 'BEGIN{
x=1;
while(x<=10)
{
if(x==5){
x++;
continue;
}
print "Value of x",x;x++;
}
}'
Value of x 1
Value of x 2
Value of x 3
Value of x 4
Value of x 6
Value of x 7
Value of x 8
Value of x 9
Value of x 10

Nello script precedente, stampa il valore di x, ad ogni iterazione, ma se il valore di x raggiunge 5, incrementa semplicemente il valore di x, quindi continua con l'iterazione successiva, non eseguirà il resto del ciclo, in modo che il valore di x non venga stampato per il valore 5. L'istruzione Continue ha il significato solo se la usi con nel ciclo.

Dichiarazione di uscita Awk

L'istruzione Exit fa sì che lo script interrompa immediatamente l'esecuzione dell'input corrente e interrompa l'elaborazione dell'input, tutto l'input rimanente viene ignorato.

Exit accetta qualsiasi intero come argomento che sarà il codice dello stato di uscita per il processo awk. Se non viene fornito alcun argomento, exit restituisce lo stato zero.

7. Esempio di uscita Awk:uscita dal ciclo alla 5a iterazione

$ awk 'BEGIN{
x=1;
while(x<=10)
{
if(x==5){
exit;}
print "Value of x",x;x++;
}
}'
Value of x 1
Value of x 2
Value of x 3
Value of x 4

Nello script precedente, una volta che il valore di x raggiunge 5, chiama exit, che interrompe l'esecuzione del processo awk. Quindi il valore di x viene stampato solo fino a 4, una volta raggiunto 5 esce.

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. Bash For Loop Guida ed esempi

  2. Il tutorial del comando Numfmt con esempi per principianti

  3. Il tutorial sui comandi di tipo con esempi per principianti

  4. Scripting Linux:3 istruzioni per i cicli while in Bash

  5. Come ottenere lo stato di uscita un ciclo in bash

Il tutorial del comando fc con esempi per principianti

Bash Scripting – For Loop spiegato con esempi

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

Comprendere il ciclo for negli script della shell

Il ciclo while negli script della shell

Il ciclo Bash FOR spiegato e semplificato