GNU/Linux >> Znalost Linux >  >> Linux

4 Příklady prohlášení Awk If ( if, if else, if else if, :? )

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 o awk jsme diskutovali o tisku awk, uživatelsky definovaných proměnných awk, vestavěných proměnných awk a awk operátorech.

V tomto tutoriálu awk si projdeme příkazy awk podmíněné if s praktickými příklady.

Awk podporuje mnoho podmíněných příkazů pro řízení toku programu. Většina syntaxe podmíněného příkazu Awk vypadá jako programovací jazyk „C“.

Normálně podmíněný příkaz kontroluje podmínku před provedením jakékoli akce. Pokud je podmínka pravdivá, provedou se akce. Podobně lze akci provést, pokud je podmínka nepravdivá.

Podmíněný příkaz začíná klíčovým slovem „if“. Awk podporuje dva různé druhy příkazů if.

  1. Příkaz Awk Simple If
  2. Příkaz Awk If-Else
  3. Awk If-ElseIf-Ladder

Příkaz Awk Simple If

Jedna akce: Jednoduché Pokud se ke kontrole podmínek používá příkaz, pokud podmínka vrátí hodnotu true, provede odpovídající akce.

Syntax:
if (conditional-expression)
	action
  • if je klíčové slovo
  • podmíněný výraz – výraz pro kontrolu podmínek
  • akce – jakýkoli awk příkaz k provedení akce.

Vícenásobná akce: Pokud podmíněný výraz vrátí hodnotu true, bude provedena akce. Pokud je třeba provést více než jednu akci, měly by být akce uzavřeny do složených závorek a oddělit je na nový řádek nebo středník, jak je znázorněno níže.

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

Pokud je podmínka pravdivá, všechny akce uzavřené ve složených závorkách budou provedeny v daném pořadí. Po provedení všech akcí pokračuje ve vykonávání dalších příkazů.

Příkaz Awk If Else

Ve výše uvedeném jednoduchém příkazu awk If neexistuje žádná sada akcí v případě, že je podmínka nepravdivá. V příkazu awk If Else můžete zadat seznam akcí, které se mají provést, pokud je podmínka nepravdivá. Pokud podmínka vrátí true, bude provedena akce 1, pokud je podmínka nepravda, bude provedena akce 2.

Syntax:
if (conditional-expression)
	action1
else
	action2

Awk má také podmíněný operátor, tj. ternární operátor ( ?:), jehož funkce je podobná příkazu awk If Else. Pokud je podmíněný-výraz pravdivý, bude provedena akce1 a pokud je podmíněný-výraz nepravda, provede se akce2.

Syntax:

conditional-expression ? action1 : action2 ;

Awk If Else If žebřík

if(conditional-expression1)
	action1;
else if(conditional-expression2)
	action2;
else if(conditional-expression3)
	action3;
	.
	.
else
	action n;
  • Pokud je podmíněný-výraz1 pravdivý, bude provedena akce1.
  • Pokud je podmíněný-výraz1 nepravdivý, bude zkontrolován podmíněný-výraz2, pokud je pravdivý, provede se akce2 a pokračuje takto. Pokud žádný z podmíněných výrazů není pravdivý, bude provedena poslední část else.

Nyní vytvoříme vzorový vstupní soubor, který má známky studentů.

$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 Příklad:Zkontrolujte, zda existují všechny značky

$ 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 a $5 jsou výsledky testů studenta. Pokud je skóre testu rovno prázdné, vyhodí zprávu. || Operátor je zkontrolovat, zda některá ze značek neexistuje, měl by upozornit.

2. Awk If Else Příklad:Vygenerujte zprávu o úspěších/neúspěších na základě známek studentů v každém předmětu

$ 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

Podmínkou pro úspěšné provedení je, že všechny známky testu by měly být větší nebo rovna 35. Takže všechny výsledky testu jsou zkontrolovány, pokud jsou vyšší než 35, pak vytiskne celý řádek a řetězec „Pass“, jinak tj. i když kterýkoli z skóre testu nesplňuje podmínku, vytiskne celý řádek a vypíše řetězec „Fail“.

3. Awk If Else If Příklad:Najděte průměr a známku pro každého studenta

$ 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

Ve výše uvedeném skriptu awk má proměnná nazvaná „avg“ průměr ze tří skóre testu. Pokud je průměr větší nebo roven 90, pak je známka A, nebo pokud je průměr větší nebo roven 80, pak je známka B, pokud je průměr větší nebo roven 70, pak je známka C. Or. jinak je známka D.

4. Awk Ternární ( ?:) Příklad:Zřetězte každé 3 řádky vstupu čárkou.

$ 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,

O vestavěné proměnné awk ORS jsme diskutovali dříve. Tato proměnná se připojí za každý řádek, který dostane výstup. V tomto příkladu se na každém 3. řádku změní z čárky na nový řádek. Pro řádky 1, 2 je to čárka, pro řádek 3 je to nový řádek, pro řádky 4, 5 je to čárka, pro řádek 6 nový řádek atd.

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. Úvodní výukový program Awk – 7 příkladů tisku Awk

  2. Pole AWK vysvětleno na 5 praktických příkladech

  3. 5 Příklady prohlášení o případu Bash

  1. Jak používat příkaz if else Conditionals ve skriptu Bash

  2. Bash If-Else prohlášení s příklady

  3. Příklady příkazů awk v Linuxu

  1. Prohlášení Bash if elif else:Komplexní návod

  2. 4 Příklady příkazů Bash If ( If then fi, If then else fi, If elif else fi, Nested if )

  3. Bash/sh příkaz „jestli je to jinak“.