GNU/Linux >> Znalost Linux >  >> Linux

Chycen ve smyčce? Awk While, Do While, For Loop, Break, Continue, Exit Příklady

Tento článek je součástí probíhající série příkladů výukových programů Awk. V našich dřívějších článcích awk jsme diskutovali o tisku awk, uživatelsky definovaných proměnných awk, vestavěných proměnných awk, operátorech awk a podmíněných příkazech awk.

V tomto článku se podíváme na awk loop příkazy – cykly while, do while, for , break, continue a exit příkazy spolu se 7 praktickými příklady.

Příkazy Awk looping se používají k provádění sady akcí znovu a znovu za sebou. Opakovaně provádí příkaz, dokud je podmínka pravdivá. Awk má počet cyklických příkazů jako programovací jazyk „C“.

Awk While Loop

Syntax:

while(condition)
	actions
  • while je klíčové slovo.
  • podmínka je podmíněný výraz
  • akce jsou tělem cyklu while, který může mít jeden nebo více příkazů. Pokud má akce více než jeden příkaz, musí být uzavřen ve složených závorkách.

Jak to funguje?Awk while cyklus nejprve zkontroluje podmínku, pokud je podmínka pravdivá, pak provede seznam akcí. Po dokončení provedení akce se podmínka znovu zkontroluje, a pokud je pravdivá, akce se provede znovu. Tento proces se opakuje, dokud se podmínka nestane nepravdivou. Pokud podmínka vrátí hodnotu false v první iteraci, akce se nikdy neprovedou.

1. Příklad Awk While Loop:Vytvořte řetězec určité délky

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

Výše uvedený příklad používá speciální blok ‚BEGIN { }‘, který se v programu Awk spustí dříve než cokoli jiného. V tomto bloku smyčka awk while připojí znak ‚x‘ k proměnné ‚řetězec‘ 50krát. count je proměnná, která se inkrementuje a kontroluje se, že je menší než 50. Takže po 50 iteracích se tato podmínka stane nepravdivou.
Po jejím zacyklení se vytiskne proměnná ‘string’. Protože tento program Awk nemá tělo, ukončí se po provedení bloku BEGIN.

Awk Do-While Loop

Jak to funguje?Awk Do while smyčka se nazývá výstupní řízená smyčka, zatímco smyčka awk while se nazývá vstupní řízená smyčka. Protože zatímco smyčka nejprve zkontroluje podmínku, pak se rozhodne provést tělo nebo ne. Ale awk dělat, zatímco cyklus jednou provede tělo a poté tělo opakuje, dokud je podmínka pravdivá.

Syntax:

do
action
while(condition)

I když je podmínka nepravdivá, na začátku se akce provede alespoň jednou.

2. Awk Do While Loop Příklad:Vytiskněte zprávu alespoň jednou

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

Ve výše uvedeném skriptu je příkaz print proveden alespoň jednou, pokud použijete příkaz while, nejprve bude podmínka zkontrolována po inicializaci počtu na 1, při první iteraci bude podmínka nepravdivá, takže příkaz print nebude' t se provede, ale v do, zatímco první tělo bude provedeno, takže provede příkaz print.

Příkaz Awk For Loop

Awk pro příkaz je stejný jako smyčka awk while, ale jeho syntaxe je mnohem jednodušší.

Syntax:

for(initialization;condition;increment/decrement)
actions

Jak to funguje?Awk pro příkaz začíná provedením inicializace, poté zkontroluje podmínku, pokud je podmínka pravdivá, provede akce, poté zvýší nebo sníží. Poté, dokud je podmínka pravdivá, opakovaně provádí akci a poté inkrementuje/snižuje.

3. Příklad Awk For Loop . Vytiskněte součet polí ve všech řádcích.

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

Nejprve je proměnná i inicializována na 1, poté zkontroluje, zda je i menší nebo rovno celkovému počtu polí, poté pokračuje v přidávání všech polí a nakonec se sčítání uloží do proměnné total. V bloku END stačí vytisknout proměnnou total.

4. Awk For Loop Příklad:Vytiskněte pole v opačném pořadí na každém řádku.

$ 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

O vestavěné proměnné awk NF jsme diskutovali v našem předchozím článku. Po zpracování každého řádku Awk nastaví proměnnou NF na počet polí nalezených na tomto řádku.

Výše uvedený skript provádí smyčky v obráceném pořadí počínaje NF po 1 a vypisuje pole jedno po druhém. Začíná polem $NF, poté $(NF-1),…, $1. Poté vytiskne znak nového řádku.

Nyní se podívejme na některé další příkazy, které lze použít s příkazem smyčkování.

Příkaz Awk Break

Příkaz Break se používá k vyskočení z nejvnitřnější smyčky (smyčka while, do-while a for), která ji uzavírá.

5. Awk Break Příklad:Awk Script projde pouze 10 iteracemi

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

Výše uvedená smyčka awk while vytiskne řetězec „navždy“ navždy, protože podmínka nikdy neselhává. Nyní, pokud chcete zastavit smyčku po prvních 10 iteracích, podívejte se na níže uvedený skript.

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

Ve výše uvedeném skriptu kontroluje hodnotu proměnné „x“, pokud dosáhne 10, vyskočí ze smyčky pomocí příkazu break.

Příkaz Awk Continue

Příkaz Continue přeskočí zbytek těla smyčky a způsobí, že další cyklus kolem smyčky začne okamžitě.

6. Awk Continue Příklad:Proveďte cyklus kromě 5. iterace

$ 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

Ve výše uvedeném skriptu vypíše hodnotu x při každé iteraci, ale pokud hodnota x dosáhne 5, pak pouze zvýší hodnotu x, pak pokračuje další iterací, nevykoná zbytek těla cyklu, takže hodnota x není vytištěna pro hodnotu 5. Příkaz Continue má význam pouze v případě, že v cyklu použijete s.

Příkaz Awk Exit

Příkaz Exit způsobí, že skript okamžitě zastaví provádění aktuálního vstupu a zastaví zpracování vstupu, veškerý zbývající vstup je ignorován.

Exit přijímá jakékoli celé číslo jako argument, který bude kódem stavu ukončení pro proces awk. Pokud není zadán žádný argument, vrátí exit stav nula.

7. Awk Příklad ukončení:Ukončení smyčky v 5. iteraci

$ 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

Ve výše uvedeném skriptu, jakmile hodnota x dosáhne 5, zavolá exit, což zastaví provádění procesu awk. Hodnota x se tedy tiskne pouze do 4, jakmile dosáhne 5, odejde.

Doporučená četba

Sed and Awk 101 Hacks, od Rameshe Natarajan . V prostředí UNIX/Linux trávím několik hodin denně a zabývám se textovými soubory (data, konfigurační soubory a soubory protokolu). Sed a Awk používám pro všechny své práce s textem. Na základě mých zkušeností se Sed and Awk jsem napsal e-knihu Sed and Awk 101 Hacks, která obsahuje 101 praktických příkladů různých pokročilých funkcí Sed a Awk, které zlepší váš život v UNIX / Linux. I když Sed and Awk používáte několik let a nečetli jste tuto knihu, udělejte si laskavost a přečtěte si tuto knihu. Budete ohromeni možnostmi nástrojů Sed a Awk.


Linux
  1. Bash pro průvodce smyčkou a příklady

  2. Příkaz ukončení Linuxu vysvětlený pro začátečníky (s příklady)

  3. Numfmt Command Tutorial s příklady pro začátečníky

  1. Kurz příkazu typu s příklady pro začátečníky

  2. Příklady Bash for Loop a While Loop

  3. Jak získat stav ukončení smyčky v bash

  1. Skriptování v Linuxu:3 postupy pro smyčky while v Bash

  2. Udržujeme vás ve smyčce – příklady opakování pro, Zatímco, dokud

  3. Bash for smyčky Příklady