Awk

Cum se folosește declarația condițională în comanda awk

Cum se folosește declarația condițională în comanda awk
Instrucțiunea condițională este utilizată în orice limbaj de programare pentru a executa orice instrucțiune bazată pe o anumită condiție. Instrucțiunea condițională se execută pe baza valorii adevărate sau false atunci când instrucțiunile if-else și if-elseif sunt utilizate pentru a scrie instrucțiunea condițională în programare. Awk acceptă toate tipurile de afirmații condiționale, cum ar fi alte limbaje de programare.  Modul în care pot fi folosite diferite afirmații condiționale în comanda awk este prezentat în acest tutorial.

Sintaxă:

Sintaxa pentru patru tipuri de enunțuri condiționate este menționată mai jos.

  1. afirmatie if
dacă (condiție)
afirmație

Instrucțiunea se execută atunci când condiția if revine adevărată.

  1. afirmație if-else
dacă (condiție)
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.

  1. declarație if-elseif
dacă (condiție)
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.

  1. Ternar (?:) operator
(condiție) ? statement-1: statement-2

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ți
MARTIN 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.txt

Ieș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ă.txt

Ieș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.

Instrumente utile pentru jucătorii Linux
Dacă vă place să jucați jocuri pe Linux, este posibil să fi folosit aplicații și utilitare precum Wine, Lutris și OBS Studio pentru a îmbunătăți exper...
Jocuri HD remasterizate pentru Linux care nu au avut niciodată lansare Linux mai devreme
Mulți dezvoltatori și editori de jocuri vin cu remasterizarea HD a jocurilor vechi pentru a prelungi durata de viață a francizei, vă rog fanilor să so...
Cum se utilizează AutoKey pentru automatizarea jocurilor Linux
AutoKey este un utilitar de automatizare desktop pentru Linux și X11, programat în Python 3, GTK și Qt. Folosind funcțiile sale de scriptare și MACRO,...