Syntax:
Syntaxe čtyř typů podmíněných příkazů je uvedena níže.
- pokud prohlášení
prohlášení
Příkaz se provede, když podmínka if vrátí hodnotu true.
- prohlášení if-else
prohlášení-1
jiný
prohlášení-2
Příkaz 1 se provede, když je splněna podmínka if, a příkaz-2 se provede, pokud if vrátí hodnotu false.
- if-elseif prohlášení
prohlášení-1
elseif
prohlášení-2
elseif
prohlášení-3
… .
jiný
prohlášení č
Tento podmíněný příkaz se používá k provedení příkazu založeného na podmínce multiple if. Pokud je první podmínka nepravdivá, zkontroluje se druhá podmínka. Pokud je druhá podmínka nepravdivá, zkontroluje třetí podmínku atd. Pokud se všechny podmínky vrátí nepravdivé, provede se příkaz else part.
- Ternární (?:) operátor
Jako alternativu příkazu if-else lze použít ternární operátor. Pokud je podmínka pravdivá, příkaz-1 se provede a pokud je podmínka nepravdivá, provede se příkaz-2.
Příklad 1: Použití jednoduchého příkazu if v awk
Vytvořte textový soubor s názvem zaměstnanec.txt s následujícím obsahem. Předpokládejme, že musíte zjistit název oddělení, věk a plat zaměstnance, jehož ID je 11002.
zaměstnanec.txt
Prodej 11001 45 $ 300011002 HR 32 $ 1500
11003 Marketing 26 $ 1200
11004 HR 25 2500 $
Pro vyhledání ID 11002 v prvním poli souboru se v následujícím skriptu použije podmínka typu if. Pokud se podmínka stane pravdivou, vytiskne hodnoty ostatních polí příslušného řádku, jinak se nic nevytiskne.
$ awk 'if ($ 1 == "11002")
tisk "Název oddělení:", $ 2, "\ n";
tisk "Věk:", 3 $, "\ n";
vytisknout "Plat:", 4 $, "\ n";
zaměstnanec.txt
Výstup:
ID 1102 v souboru existuje. Vytisklo tedy další hodnoty zaměstnance.
Příklad 2: Použití if-else v awk
Předpokládejme, že chcete vytisknout informace o platu zaměstnanců, jejichž věk je menší nebo roven 40, a vytisknout informace o věku ostatních zaměstnanců. Následující awk skript může tento úkol provést. Ve společnosti je pouze jeden zaměstnanec zaměstnanec.txt soubor, jehož věk je více než 40 let a věk všech ostatních zaměstnanců je méně než 40 let.
$ awk 'pokud ($ 3 <= 40)
tisk "Plat", 1 $, "je", 4 $, "\ n"
jiný
tisk "Věk", $ 1, "je", $ 3, "\ n"
zaměstnanec.txt
Výstup:
Po spuštění skriptu se zobrazí následující výstup.
Příklad 3: Použití if-elseif ve skriptu awk
Vytvořte textový soubor s názvem osoba.txt s následujícím obsahem.
osoba.txt
JACKSON Mužské podnikáníMužský servisní držák MARTIN
LILY manažerka
ROBINSON Mužský generální ředitel
Vytvořte awk soubor s názvem if_elseif.awk s následujícím kódem pro tisk oblíbené barvy každé osoby, jejíž jméno v souboru existuje. Ve skriptu se k provedení této úlohy používá příkaz if-elseif. Skript načte hodnotu prvního pole souboru, zaměstnanec.txt a zkontrolujte konkrétní hodnotu. Pokud první -li podmínka se stane nepravdivou, pak zkontroluje druhou -li stav atd. Pokud se splní podmínka if, bude přiřazena hodnota barvy. Pokud se všechny podmínky stanou neplatnými, pak Žádný bude přiřazena jako hodnota barvy. Oblíbená barva každého člověka vytiskne nebo "Nebyla nalezena žádná osoba" vytiskne se, pokud se neshoduje žádné jméno osoby.
if_elseif.awk
name = $ 1;
if (name == "JACKSON") color = "Blue";
jinak if (name == "MARTIN") color = "Black";
jinak if (name == "LILY") color = "Red";
else if (name == "ROBINSON") color = "White";
else color = "Žádný";
pokud (barva!= "None") print "Oblíbená barva", name, "is", color;
else print "Nebyla nalezena žádná osoba";
Spuštěním následujícího příkazu spustíte soubor if_elseif.awk s osobou.txt
$ awk -f if_elseif.awk osoba.txtVýstup:
Po spuštění příkazu se zobrazí následující výstup.
Příklad 4: Použití ternárního operátoru v awk
Třetí pole osoba.txt soubor obsahuje profese každé osoby. Následující ternární operátor načte každý řádek souboru a porovná hodnotu třetího pole s „Manažer“. Pokud se hodnota shoduje, vytiskne jméno osoby a jinak vytiskne její pohlaví.
$ awk 'print ($ 3 == "Správce") ? „Jméno je„ $ 1: “Pohlaví je„ $ 2 “osoba.txtVýstup:
Po provedení skriptu se zobrazí následující výstup. Jedna osoba s „Manažerskou profesí existuje v osoba.txt. Vytiskne se tedy jméno jedné osoby a pohlaví se vytiskne pro jiné osoby.
Příklad 5: Použití více podmínek v příkazu if
Logické OR a Logické AND lze použít k definování více podmínek v podmíněném příkazu awk skriptu. Následující skript awk čte každý řádek zaměstnanec.txt a kontroluje věk a označení s konkrétními hodnotami. Logické AND se používá v -li stav. Pokud je věková hodnota větší nebo rovna 30 a označení je „HR“, vytiskne se odpovídající ID a plat zaměstnance.
$ awk 'if ($ 3> = 30 && $ 2 == "HR") vytisknout "ID zaměstnance:",$ 1, "a", "Plat:", $ 4, "\ n"; 'zaměstnanec.txt
Výstup:
Po provedení skriptu se zobrazí následující výstup. Existuje pouze jeden zaměstnanec s označením „HR“ v zaměstnanec.txt. Zde jsou vytištěny informace o ID a platu tohoto zaměstnance.
Závěr:
Nejběžnější použití podmíněného příkazu jakéhokoli standardního programování podporuje příkaz awk. Jak můžete v awk použít jednu a více podmínek, vysvětlíme zde na velmi jednoduchých příkladech. Doufám, že po procvičení těchto příkladů bude student schopen správně používat podmíněný příkaz v awk skriptu.