Ärme

Kuidas kasutada tingimuslauset käsus awk

Kuidas kasutada tingimuslauset käsus awk
Tingimuslauset kasutatakse mis tahes programmeerimiskeeles konkreetse tingimuse alusel mis tahes lause täitmiseks. Tingimuslauset täidetakse väärtuse true või false põhjal, kui tingimuselause programmeerimisse kirjutamiseks kasutatakse if-else ja if-elseif lauseid. Awk toetab igat tüüpi tingimuslauseid nagu muud programmeerimiskeeled.  Kuidas erinevaid tingimuslauseid saab käsus awk kasutada, on näidatud selles õpetuses.

Süntaks:

Allpool on ära toodud nelja tüüpi tingimuslausete süntaks.

  1. kui avaldus
if (tingimus)
avaldus

Avaldus käivitatakse siis, kui tingimus if vastab tõele.

  1. if-else avaldus
if (tingimus)
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.

  1. if-elseif-lause
if (tingimus)
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.

  1. Kolmapäev (?:) operaator
(tingimus) ? avaldus-1: avaldus-2

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 $ 3000
11002 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õte
MARTINi 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.txt

Vä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.txt

Vä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.

Kuidas Linuxis oma mänguseanssi jäädvustada ja voogesitada
Varem peeti mängude mängimist ainult hobiks, kuid aja jooksul kasvas mängutööstus tehnoloogia ja mängijate arvu osas tohutult. Mängupublik on veebimän...
Parimad mängud, mida saab mängida käte jälgimisega
Oculus Quest tutvustas hiljuti suurepärast ideed käsitsi jälgimisest ilma kontrolleriteta. Üha suurema hulga mängude ja tegevustega, mis toetavad kas ...
Kuidas kuvada OSD ülekatet täisekraanil Linuxi rakendustes ja mängudes
Täisekraaniga mängude mängimine või rakenduste kasutamine häireteta täisekraanirežiimis võib teid paneelil või tegumiribal kuvatavast asjakohasest süs...