Sintaksa:
Sintaksa štirih pogojnih stavkov je navedena spodaj.
- če izjava
izjavo
Stavek se izvrši, ko pogoj if vrne true.
- izjava if-else
izjava-1
sicer
izjava-2
Stavek-1 se izvrši, če je pogoj if resničen, stavek-2 pa se izvede, če je if false.
- izjava if-elseif
izjava-1
elseif
izjava-2
elseif
izjava-3
.. .
sicer
izjava-n
Ta pogojni stavek se uporablja za izvajanje stavka, ki temelji na več pogojih if. Če je prvi pogoj napačen, preveri drugega. Če je drugi pogoj napačen, preveri tretji pogoj itd. Če vsi pogoji vrnejo false, bo izvedel stavek else part.
- Ternarni (?:) operater
Ternarni operator lahko uporabimo kot alternativo stavku if-else. Če je pogoj true, se bo izjava-1 izvedla in če bo pogoj false, se bo izvedla izjava-2.
Primer-1: Uporaba preprostega, če je v awk
Ustvarite besedilno datoteko z imenom emplyee.txt z naslednjo vsebino. Recimo, da morate ugotoviti ime oddelka, starost in plačo zaposlenega, katerega ID je 11002.
zaposleni.txt
11001 Prodaja 45 $ 300011002 HR 32 1500 dolarjev
11003 Trženje 26 1200 dolarjev
11004 HR 25 2500 dolarjev
Preprost pogoj if se v naslednjem skriptu uporablja za iskanje id 11002 v prvem polju datoteke. Če pogoj postane resničen, bo natisnil vrednosti drugih polj ustrezne vrstice, sicer se ne natisne nič.
$ awk 'če ($ 1 == "11002")
natisni "Ime oddelka:", $ 2, "\ n";
natisni "Starost:", $ 3, "\ n";
natisni "Plača:", 4 USD, "\ n";
'zaposleni.txt
Izhod:
ID, 1102, obstaja v datoteki. Tako je natisnila druge vrednote zaposlenega.
Primer-2: Uporaba if-else v awk
Recimo, da želite natisniti podatke o plači zaposlenih, katerih starost je manjša ali enaka 40 let, in podatke o starosti za druge zaposlene. To nalogo lahko opravi naslednji skript awk. V. Je samo en uslužbenec zaposleni.txt datoteko, katere starost je več kot 40 let in starost vseh drugih zaposlenih manj kot 40 let.
$ awk 'če (3 USD <= 40)
natisni "Plača", 1 USD, "je", 4 USD, "\ n"
drugače
natisni "Starost", 1 USD, "je", 3 USD, "\ n"
'zaposleni.txt
Izhod:
Po zagonu skripta se prikaže naslednji izhod.
Primer-3: Uporaba if-elseif v skriptu awk
Ustvarite besedilno datoteko z imenom oseba.txt z naslednjo vsebino.
oseba.txt
JACKSON moški poselMARTIN Moški imetnik storitve
LILY ženska vodja
ROBINSON Moški izvršni direktor
Ustvari datoteko awk z imenom if_elseif.awk z naslednjo kodo za tiskanje najljubše barve vsake osebe, katere ime obstaja v datoteki. Za izvajanje te naloge se v skriptu uporablja stavek if-elseif. Skript bo prebral prvo vrednost polja v datoteki, zaposleni.txt in preverite z določeno vrednostjo. Če prvi če pogoj postane false, nato bo preveril drugega če stanje in tako naprej. Če kateri koli pogoj postane resničen, bo dodeljena barvna vrednost. Če potem vsi pogoji postanejo napačni Nobenega bo dodeljena kot vrednost barve. Najljubša barva vsake osebe bo natisnila oz "Ni najdene osebe" se bo natisnilo, če se nobeno ime osebe ne ujema.
if_elseif.awk
ime = 1 $;
if (name == "JACKSON") color = "Blue";
sicer if (name == "MARTIN") color = "Black";
sicer if (name == "LILY") color = "Rdeča";
sicer if (name == "ROBINSON") color = "White";
else color = "Brez";
če (barva!= "Brez") print "Najljubša barva", ime, "je", barva;
else natisni "Ni najdene osebe";
Zaženite naslednji ukaz, da zaženete datoteko if_elseif.awk z osebo.txt
$ awk -f if_elseif.awk oseba.txtIzhod:
Po zagonu ukaza se prikaže naslednji izhod.
Primer-4: Uporaba ternarnega operatorja v awk
Tretje polje oseba.txt datoteka vsebuje poklic vsake osebe. Naslednji ternarni operator prebere vsako vrstico datoteke in tretjo vrednost polja ujema z “Manager". Če se vrednost ujema, bo natisnil ime osebe, sicer pa spol osebe.
$ awk 'print ($ 3 == "Upravitelj") ? "Ime je" $ 1: "Spol je" $ 2 'oseba.txtIzhod:
Po izvedbi skripta se prikaže naslednji izhod. Ena oseba z »Menedžerskim poklicem obstaja v oseba.txt. Torej, ime ene osebe je natisnjeno, spol pa drugi.
Primer-5: Uporaba več pogojev v stavku if
Logično ALI in Logično IN lahko uporabimo za definiranje več pogojev v pogojnem stavku skripta awk. Naslednji skript awk bere vsako vrstico zaposleni.txt in preveri starost in oznako s posebnimi vrednostmi. Logični AND se uporablja v če stanje. Ko je starostna vrednost večja ali enaka 30 in je oznaka »HR«, se natisne ustrezen ID zaposlenega in plača.
$ awk 'if ($ 3> = 30 && $ 2 == "HR") print "ID zaposlenega:",$ 1, "in", "Plača:", $ 4, "\ n"; 'zaposleni.txt
Izhod:
Po izvedbi skripta se prikaže naslednji izhod. Obstaja samo en uslužbenec z oznako "HR" v jeziku zaposleni.txt. Podatki o identiteti in plači tega zaposlenega so natisnjeni tukaj.
Zaključek:
Najpogostejše uporabe pogojnega stavka katerega koli standardnega programiranja podpira ukaz awk. Tukaj je na zelo preprostih primerih razloženo, kako lahko v awk uporabljate posamezne in več pogojev. Upam, da bo po vadbi teh primerov učenec pravilno uporabil pogojno izjavo v skriptu awk.