Sintaxă:
Sintaxa pentru patru tipuri de enunțuri condiționate este menționată mai jos.
- afirmatie if
afirmație
Instrucțiunea se execută atunci când condiția if revine adevărată.
- afirmație if-else
declarație-1
altceva
declarație-2
Instrucțiunea-1 se execută când condiția if este adevărată și instrucțiunea-2 se execută când returnează fals.
- declarație if-elseif
declarație-1
elseif
declarație-2
elseif
declarație-3
.. .
altceva
enunț-n
Această instrucțiune condiționată este utilizată pentru executarea unei instrucțiuni bazată pe condiția multiplă if. Dacă prima condiție este falsă, atunci verifică a doua condiție. Dacă a doua condiție este falsă, atunci verifică a treia condiție și așa mai departe. Dacă toate condițiile se întorc false, atunci se va executa declarația pentru else part.
- Ternar (?:) operator
Operatorul ternar poate fi utilizat ca alternativă a declarației if-else. Dacă condiția este adevărată, instrucțiunea-1 se va executa și dacă condiția este falsă, atunci se va executa declarația-2.
Exemplu-1: Folosind simplu if in awk
Creați un fișier text numit împuternicit.txt cu următorul conținut. Să presupunem că trebuie să aflați numele departamentului, vârsta și salariul angajatului al cărui cod este 11002.
angajat.txt
11001 Vânzări 45 3000 $11002 HR 32 $ 1500
11003 Marketing 26 $ 1200
11004 HR 2500 $
O condiție simplă dacă este utilizată în următorul script pentru a căuta codul 11002 în primul câmp al fișierului. Dacă condiția devine adevărată, atunci va imprima valorile celorlalte câmpuri ale liniei corespunzătoare, altfel nu se va imprima nimic.
$ awk 'if ($ 1 == "11002")
tipăriți "Nume departament:", 2 USD, "\ n";
tipăriți „Vârstă:”, 3 USD, „\ n”;
tipăriți "Salariu:", 4 USD, "\ n";
'angajat.txt
Ieșire:
ID-ul, 1102 există în fișier. Deci, a tipărit celelalte valori ale angajatului.
Exemplul 2: Folosind if-else în awk
Să presupunem că doriți să imprimați informațiile salariale ale angajaților a căror vârstă este mai mică sau egală cu 40 și să imprimați informațiile despre vârstă pentru alți angajați. Următorul script awk poate realiza această sarcină. Există un singur angajat în angajat.txt dosar a cărui vârstă este mai mare de 40 și a tuturor celorlalți angajați este mai mică de 40.
$ awk 'dacă ($ 3 <= 40)
print "Salariul de", 1 $, "este", 4 $, "\ n"
altceva
tipăriți "Vârsta", 1 USD, "este", 3 USD, "\ n"
'angajat.txt
Ieșire:
Următoarea ieșire va apărea după rularea scriptului.
Exemplul-3: Utilizarea if-elseif în scriptul awk
Creați un fișier text numit persoană.txt cu următorul conținut.
persoană.txt
JACKSON Business pentru bărbațiMARTIN Titular de serviciu masculin
LILY Manager de femeie
ROBINSON bărbat CEO
Creați un fișier awk numit if_elseif.awk cu următorul cod pentru a imprima culoarea preferată a fiecărei persoane al cărei nume există în fișier. Instrucțiunea if-elseif este utilizată în script pentru a realiza această sarcină. Scriptul va citi prima valoare de câmp a fișierului, angajat.txt și verificați cu o anumită valoare. Dacă primul dacă condiția devine falsă, apoi va verifica a doua dacă starea și așa mai departe. Atunci când orice condiție devine adevărată, atunci va fi atribuită o valoare a culorii. Dacă toate condițiile devin false, atunci Nici unul va fi atribuită ca valoare a culorii. Culoarea preferată a fiecărei persoane va imprima sau „Nicio persoană găsită” va imprima dacă nu se potrivește numele persoanei.
if_elseif.awk
nume = 1 $;
if (nume == "JACKSON") culoare = "Albastru";
else if (nume == "MARTIN") color = "Negru";
else if (nume == "LILY") color = "Red";
else if (nume == "ROBINSON") color = "White";
else color = "Niciuna";
dacă (culoare!= "Niciuna") print "Culoarea preferată a", nume, "este", culoare;
altfel tipăriți „Nici o persoană găsită”;
Rulați următoarea comandă pentru a executa fișierul if_elseif.awk cu persoana.txt
$ awk -f if_elseif.awk persoana.txtIeșire:
Următoarea ieșire va apărea după executarea comenzii.
Exemplul-4: Utilizarea operatorului ternar în awk
Al treilea domeniu al persoană.txt dosarul conține profesia fiecărei persoane. Următorul operator ternar citește fiecare linie a fișierului și se potrivește cu a treia valoare a câmpului cu „Administrator”. Dacă valoarea se potrivește, atunci se va imprima numele persoanei și în caz contrar va imprima sexul persoanei respective.
$ awk 'print ($ 3 == "Manager") ? „Numele este” $ 1: „Sexul este„ $ 2 ”persoană.txtIeșire:
Următoarea ieșire va apărea după executarea scriptului. O persoană cu „profesie de manager există în persoană.txt. Deci, numele unei persoane este tipărit și sexul este tipărit pentru alte persoane.
Exemplul-5: Utilizarea condițiilor multiple în instrucțiunea if
OR logic și AND logic pot fi utilizate pentru a defini condiții multiple în declarația condițională a scriptului awk. Următorul script awk citește fiecare linie de angajat.txt și verifică vârsta și desemnarea cu valori particulare. Logic AND este utilizat în dacă condiție. Atunci când valoarea de vârstă este mai mare sau egală cu 30 și desemnarea este „HR”, atunci se vor tipări identitatea și salariul corespunzător.
$ awk 'if ($ 3> = 30 && $ 2 == "HR") print "ID angajat:",1 $, "și", "Salariu:", 4 $, "\ n"; 'angajat.txt
Ieșire:
Următoarea ieșire va apărea după executarea scriptului. Există un singur angajat cu denumirea „HR” în angajat.txt. Informațiile de identitate și salariu pentru acest angajat sunt tipărite aici.
Concluzie:
Cele mai frecvente utilizări ale instrucțiunii condiționate ale oricărei programări standard sunt acceptate de comanda awk. Modul în care puteți utiliza condiții unice și multiple în awk este explicat prin utilizarea de exemple foarte simple aici. Sper că, după ce va practica aceste exemple, cursantul va putea folosi corect afirmația condițională în scriptul awk.