Szintaxis:
Az alábbiakban négy feltételes utasítás típusának szintaxisát említjük.
- ha állítás
nyilatkozat
Az utasítás akkor hajtódik végre, ha az if feltétel igazra tér vissza.
- if-else nyilatkozat
nyilatkozat-1
más
nyilatkozat-2
Az utasítás-1 akkor hajtódik végre, ha az if feltétel igaz, és a-2 utasítás akkor hajt végre, ha az false visszatér.
- if-elseif állítás
nyilatkozat-1
elseif
nyilatkozat-2
elseif
nyilatkozat-3
… .
más
nyilatkozat-n
Ez a feltételes utasítás egy többszörös, ha feltétel alapú utasítás végrehajtására szolgál. Ha az első feltétel hamis, akkor ellenőrzi a második feltételt. Ha a második feltétel hamis, akkor ellenőrzi a harmadik feltételt stb. Ha minden feltétel hamis eredményt ad, akkor végrehajtja a else part állítását.
- Ternary (?:) operátor
A Ternary operátor az if-else utasítás alternatívájaként használható. Ha az true feltétel, akkor az -1 utasítás végrehajtja, és ha a false feltétel akkor a -2 utasítás teljesül.
1. példa: Egyszerű használata, ha awk
Hozzon létre egy szöveges fájlt alkalmazott.txt a következő tartalommal. Tegyük fel, hogy meg kell találnia annak az osztálynak a nevét, életkorát és fizetését, amelynek azonosítója 11002.
munkavállaló.txt
11001 Értékesítés 45, 3000 USD11002 HR 32 1500 USD
11003 Marketing 26 1200 USD
11004 HR 25 2500 USD
Egy egyszerű if feltételt használunk a következő szkriptben az 11002 azonosító keresésére a fájl első mezőjében. Ha a feltétel igaz lesz, akkor kinyomtatja a megfelelő sor többi mezőjének értékét, különben semmi nem kerül kinyomtatásra.
$ awk 'if ($ 1 == "11002")
print "Osztály neve:", $ 2, "\ n";
print "Age:", $ 3, "\ n";
print "Fizetés:", $ 4, "\ n";
'alkalmazottja.txt
Kimenet:
Az 1102 azonosító létezik a fájlban. Tehát kinyomtatta az alkalmazott egyéb értékeit.
2. példa: if-else használata az awk fájlban
Tegyük fel, hogy ki akarja nyomtatni azoknak az alkalmazottaknak a fizetési adatait, akiknek életkora nem haladja meg a 40 évet, és kinyomtatják az életkorra vonatkozó információkat más alkalmazottak számára. A következő awk szkript képes elvégezni ezt a feladatot. Csak egy alkalmazott van bent munkavállaló.txt akinek életkora meghaladja a 40-et, és az összes többi alkalmazott életkora kevesebb, mint 40 év.
$ awk 'ha (3 USD <= 40)
print "A fizetés", $ 1, "is", $ 4, "\ n"
más
print "A kor", $ 1, "is", $ 3, "\ n"
'alkalmazottja.txt
Kimenet:
A következő kimenet jelenik meg a szkript futtatása után.
3. példa: Az if-elseif használata az awk szkriptben
Hozzon létre egy személy nevű szövegfájlt.txt a következő tartalommal.
személy.txt
JACKSON férfi vállalkozásMARTIN férfi szolgálattartó
LILY női menedzser
ROBINSON Férfi vezérigazgató
Hozzon létre egy awk fájlt if_elseif.awk a következő kóddal kinyomtathatja a fájlban szereplő nevek kedvenc színét. A feladat végrehajtásához az if-elseif utasítást használja a szkript. A szkript beolvassa a fájl első mezőértékét, munkavállaló.txt és ellenőrizze egy adott értékkel. Ha az első ha az állapot hamis lesz, akkor ellenőrzi a másodikat ha állapot és így tovább. Ha bármely feltétel teljesül, akkor színértéket rendelünk hozzá. Ha minden feltétel hamis lesz, akkor Egyik sem színértékként lesz hozzárendelve. Minden ember kedvenc színe kinyomtatja vagy "Nincs személy" kinyomtatja, ha egyetlen személy neve sem egyezik.
if_elseif.awk
név = $ 1;
if (név == "JACKSON") szín = "kék";
else if (név == "MARTIN") color = "fekete";
else if (name == "LILY") color = "Red";
else if (név == "ROBINSON") color = "Fehér";
else color = "Nincs";
ha (szín!= "Nincs") print "A" kedvenc színe ", név," van ", szín;
máshol nyomtassa ki: "Nincs személy";
Futtassa a következő parancsot az if_elseif fájl végrehajtásához.awk személyesen.txt
$ awk -f if_elseif.awk személy.txtKimenet:
A következő kimenet jelenik meg a parancs futtatása után.
4. példa: Terner operátor használata az awk-ban
A harmadik mező személy.txt fájl tartalmazza az egyes személyek szakmáját. A következő háromszintű operátor elolvassa a fájl minden sorát, és a harmadik mező értékét aMenedzser”. Ha az érték megegyezik, akkor kinyomtatja a személy nevét, különben pedig a személy nemét.
$ awk 'print ($ 3 == "Kezelő") ? "A név:" $ 1: "A" nem "$ 2 személy.txtKimenet:
A szkript végrehajtása után a következő kimenet jelenik meg. Egy személy rendelkezik „Menedzser szakmával a személy.txt. Tehát egy személy neve kinyomtatva, a többi nem pedig nem.
5. példa: Több feltétel használata az if utasításban
A Logical OR és a Logical AND segítségével több feltétel is meghatározható az awk script feltételes utasításában. A következő awk szkript beolvassa az egyes sorokat munkavállaló.txt és bizonyos értékekkel ellenőrzi az életkort és a megjelölést. A logikai ÉS alkalmazást a ha feltétel. Ha az életkor értéke meghaladja vagy meghaladja a 30-at, és a megjelölés „HR”, akkor a megfelelő munkavállalói azonosító és fizetés kerül kinyomtatásra.
$ awk 'if ($ 3> = 30 && $ 2 == "HR") print "Alkalmazói azonosító:",$ 1, "és", "Fizetés:", $ 4, "\ n"; 'alkalmazott.txt
Kimenet:
A szkript végrehajtása után a következő kimenet jelenik meg. Csak egy alkalmazott van, a „HR” megnevezéssel munkavállaló.txt. Az alkalmazott azonosítási és fizetési információit itt nyomtatja ki.
Következtetés:
Bármely szokásos program feltételes utasításának leggyakoribb felhasználását az awk parancs támogatja. Az egyszerű és több feltétel használatát az awk-ban itt nagyon egyszerű példákkal magyarázzuk. Remélem, hogy ezeknek a példáknak a gyakorlása után a tanuló képes lesz megfelelően használni a feltételes utasítást az awk szkriptben.