Süntaks:
Allpool on ära toodud nelja tüüpi tingimuslausete süntaks.
- kui avaldus
avaldus
Avaldus käivitatakse siis, kui tingimus if vastab tõele.
- if-else avaldus
avaldus-1
veel
avaldus-2
Avaldis-1 käivitatakse juhul, kui tingimus if on tõene, ja lause-2 käivitub siis, kui vastus on false.
- if-elseif-lause
avaldus-1
elseif
avaldus-2
elseif
avaldus-3
… .
veel
avaldus-n
Seda tingimuslauset kasutatakse mitme if tingimusel põhineva lause täitmiseks. Kui esimene tingimus on vale, kontrollib see teist tingimust. Kui teine tingimus on vale, kontrollib see kolmandat tingimust ja nii edasi. Kui kõik tingimused tagastavad vale, täidab see lause muu osa avalduse.
- Kolmapäev (?:) operaator
Kolmepoolset operaatorit saab kasutada if-else avalduse alternatiivina. Kui tingimus on tõene, täidetakse lause-1 ja kui tingimus vale, siis täidetakse lause-2.
Näide 1: lihtsa kasutamise korral, kui see on awk-s
Looge nimega tekstifail töötaja.txt järgmise sisuga. Oletame, et peate välja selgitama töötaja osakonna nime, vanuse ja palga, kelle ID on 11002.
töötaja.txt
11001 Müük 45 $ 300011002 HR 32 1500 dollarit
11003 Turundus 26 1200 dollarit
11004 HR 25 2500 dollarit
Faili esimeselt väljalt ID 11002 otsimiseks kasutatakse järgmises skriptis lihtsat tingimust. Kui tingimus saab tõene, prindib see vastava rea teiste väljade väärtused, vastasel juhul ei prindita midagi.
$ awk 'kui ($ 1 == "11002")
print "Osakonna nimi:", 2 dollarit, "\ n";
print "Vanus:", 3 dollarit, "\ n";
print "Palk:", 4 dollarit, "\ n";
'töötaja.txt
Väljund:
Id, 1102 on failis olemas. Nii trükkis see töötaja teised väärtused.
Näide 2: if-else kasutamine awk-s
Oletame, et soovite printida töötajate palgateabe, kelle vanus on alla 40 või vanem, ja printida teiste töötajate vanuseandmed. Selle ülesandega saab hakkama järgmine awk-skript. Seal on ainult üks töötaja töötaja.txt toimik, mille vanus on üle 40 ja kogu muu töötaja vanus alla 40.
$ awk 'kui (3 dollarit <= 40)
print "Palk", $ 1, "on", $ 4, "\ n"
muud
print "Vanus", $ 1, "on", $ 3, "\ n"
'töötaja.txt
Väljund:
Pärast skripti käivitamist ilmub järgmine väljund.
Näide 3: if-elseifi kasutamine awk-skriptis
Looge tekstifail nimega isik.txt järgmise sisuga.
isik.txt
JACKSON MeesteettevõteMARTINi meesteenistuse omanik
LILY naisjuht
ROBINSON Mees tegevjuht
Looge nimega awk-fail if_elseif.awk järgmise koodiga iga inimese lemmikvärvi printimiseks, kelle nimi on failis olemas. Selle ülesande täitmiseks kasutatakse skriptis lauset If-elseif. Skript loeb faili esimese välja väärtuse, töötaja.txt ja kontrollige konkreetse väärtusega. Kui esimene kui seisund muutub valeks, siis kontrollib see teist kui seisund ja nii edasi. Kui mõni tingimus muutub tõeks, määratakse värviväärtus. Kui kõik tingimused muutuvad valeks Puudub määratakse värvi väärtuseks. Iga inimese lemmikvärv prindib või „Ühtegi inimest ei leitud” prinditakse, kui ükski isiku nimi ei ühti.
if_elseif.awk
nimi = $ 1;
kui (nimi == "JACKSON") värv = "sinine";
else if (nimi == "MARTIN") värv = "must";
else if (nimi == "LILY") värv = "punane";
else if (nimi == "ROBINSON") color = "valge";
muu värv = "Puudub";
kui (värv!= "Puudub") print "Lemmikvärv", nimi, "on", värv;
muul viisil printida "Isikut ei leitud";
Faili if_elseif käivitamiseks käivitage järgmine käsk.awk koos inimesega.txt
$ awk -f if_elseif.awk inimene.txtVäljund:
Pärast käsu käivitamist ilmub järgmine väljund.
Näide 4: kolmepoolse operaatori kasutamine awk-s
Kolmas väli isik.txt toimik sisaldab iga inimese elukutset. Järgmine kolmepoolne operaator loeb faili iga rida ja sobitab kolmanda välja väärtuse väärtusega „Juhataja”. Kui väärtus ühtib, prindib see inimese nime ja muul juhul inimese sugu.
$ awk 'print ($ 3 == "Haldur") ? "Nimi on" $ 1: "Sugu on" $ 2 'inimene.txtVäljund:
Pärast skripti käivitamist ilmub järgmine väljund. Üks inimene, kellel on „Juhi elukutse, on olemas isik.txt. Niisiis, ühe isiku nimi trükitakse ja teistele isikutele trükitakse sugu.
Näide 5: if-lause mitmete tingimuste kasutamine
Loogilist VÕI ja Loogilist JA saab kasutada mitme tingimuse määratlemiseks awk-skripti tingimuslauses. Järgmine awk-skript loeb iga rea töötaja.txt ning kontrollib vanust ja nimetust konkreetsete väärtustega. Loogilist JA kasutatakse süsteemis kui seisund. Kui vanuse väärtus on suurem või võrdne 30 ja määramine on HR, siis prinditakse vastav töötaja ID ja palk.
$ awk 'if ($ 3> = 30 && $ 2 == "HR") print "Töötaja ID:",$ 1, "ja", "Palk:", $ 4, "\ n"; 'töötaja.txt
Väljund:
Pärast skripti käivitamist ilmub järgmine väljund. Seal on ainult üks töötaja, kellel on tähis “HR” töötaja.txt. Selle töötaja ID- ja palgateave on trükitud siia.
Järeldus:
Mis tahes tavalise programmeerimise tingimuslause kõige tavalisemaid kasutusviise toetab käsk awk. Üksikute ja mitme tingimuse kasutamist awk-s selgitatakse siin väga lihtsate näidete abil. Loodan, et pärast nende näidete harjutamist saab õppija awk-skriptis tingimuslauset õigesti kasutada.