Awk

Kako se koristi uvjetni izraz u naredbi awk

Kako se koristi uvjetni izraz u naredbi awk
Uvjetni izraz koristi se u bilo kojem programskom jeziku za izvršavanje bilo kojeg izraza na temelju određenog uvjeta. Uvjetni izraz izvršava se na temelju vrijednosti true ili false kada se if-else i if-elseif izrazi koriste za pisanje uvjetnog izraza u programiranju. Awk podržava sve vrste uvjetnih izjava poput ostalih programskih jezika.  Kako se različiti uvjetni izrazi mogu koristiti u naredbi awk prikazano je u ovom vodiču.

Sintaksa:

Sintaksa za četiri vrste uvjetnih izjava spomenuta je u nastavku.

  1. ako izjava
if (uvjet)
izjava

Izraz se izvršava kada uvjet if vrati true.

  1. if-else izjava
if (uvjet)
izjava-1

drugo
izjava-2

Izraz-1 izvršava se kada je uvjet if istinit, a izraz-2 izvršava se ako je return false.

  1. if-elseif izjava
if (uvjet)
izjava-1

elseif
izjava-2

elseif
izjava-3

.. .
drugo
izjava-n

Ovaj uvjetni izraz koristi se za izvršavanje izraza na temelju višestrukih uvjeta if. Ako je prvi uvjet netačan, provjerava drugi uvjet. Ako je drugi uvjet netačan, provjerava treći uvjet i tako dalje. Ako se svi uvjeti vrate false, izvršit će naredbu else part.

  1. Ternarni (?:) operater
(stanje) ? izjava-1: izjava-2

Ternarni operator može se koristiti kao alternativa if-else izjavi. Ako je uvjet istinit, izvršit će se naredba-1, a ako je uvjet netačan, izvršit će se iskaz-2.

Primjer-1: Upotreba jednostavnog ako je u awk-u

Stvorite tekstualnu datoteku s imenom emplyee.txt sa sljedećim sadržajem. Pretpostavimo da morate saznati naziv odjela, dob i plaću zaposlenika čiji je id 11002.

zaposlenik.txt

11001 Prodaja 45 $ 3000
11002 HR 32 1500 USD
11003 Marketing 26 1200 dolara
11004 HR 25 2500 USD

Jednostavan uvjet if koristi se u sljedećoj skripti za pretraživanje id 11002 u prvom polju datoteke. Ako uvjet postane istinit, ispisat će se vrijednosti ostalih polja odgovarajućeg retka, inače se neće ispisati ništa.

$ awk '
ako ($ 1 == "11002")

ispis "Naziv odjela:", $ 2, "\ n";
ispis "Dob:", 3 dolara, "\ n";
ispis "Plaća:", 4 USD, "\ n";
 

'zaposlenik.txt

Izlaz:

ID, 1102 postoji u datoteci. Dakle, ispisane su ostale vrijednosti zaposlenika.

Primjer-2: Korištenje if-else u awk-u

Pretpostavimo da želite ispisati podatke o plaći zaposlenika čija je dob manja ili jednaka 40 i ispisati podatke o starosti ostalih zaposlenika. Sljedeći awk skript može obaviti ovaj zadatak. U. Postoji samo jedan zaposlenik zaposlenik.txt dosje čija je starost veća od 40, a starost svih ostalih zaposlenika manja od 40 godina.

$ awk '
ako ($ 3 <= 40)

ispis "Plaća od", 1 USD, "je", 4 USD, "\ n"

drugo

print "Dob od", $ 1, "is", $ 3, "\ n"

 
'zaposlenik.txt

Izlaz:

Sljedeći će se izlaz pojaviti nakon pokretanja skripte.

Primjer-3: Korištenje if-elseif u skripti awk

Stvorite tekstualnu datoteku s imenom osoba.txt sa sljedećim sadržajem.

osoba.txt

JACKSON muško poslovanje
MARTIN muški nositelj usluge
LILY žena menadžer
ROBINSON muški izvršni direktor

Stvorite awk datoteku s imenom ako_elseif.awk sa sljedećim kodom za ispis omiljene boje svake osobe čije ime postoji u datoteci. Izvještaj if-elseif koristi se u skripti za izvršavanje ovog zadatka. Skripta će pročitati vrijednost prvog polja datoteke, zaposlenik.txt i provjerite s određenom vrijednošću. Ako prvi ako uvjet postaje netačan tada će provjeriti drugi ako stanje i tako dalje. Ako bilo koji uvjet postane istinit, dodijelit će se vrijednost boje. Ako tada svi uvjeti postanu lažni Nijedna bit će dodijeljena kao vrijednost boje. Omiljena boja svake osobe ispisat će se ili "Nije pronađena nijedna osoba" ispisat će se ako se ne podudara nijedno ime osobe.

ako_elseif.awk


ime = 1 USD;
if (name == "JACKSON") color = "Plavo";
inače if (name == "MARTIN") color = "Black";
inače if (name == "LILY") color = "Red";
inače if (name == "ROBINSON") color = "White";
else boja = "Ništa";
 
ako (boja!= "None") print "Omiljena boja", name, "is", color;
else print "Nije pronađena nijedna osoba";
 

Pokrenite sljedeću naredbu za izvršavanje datoteke if_elseif.awk s osobom.txt

$ awk -f ako_elseif.awk osoba.txt

Izlaz:

Sljedeći će se izlaz pojaviti nakon pokretanja naredbe.

Primjer-4: Korištenje ternarnog operatora u awk

Treće polje osoba.txt datoteka sadrži zanimanje svake osobe. Sljedeći ternarni operator čita svaki redak datoteke i podudara vrijednost trećeg polja s “Menadžer". Ako se vrijednost podudara, ispisat će ime osobe, a u suprotnom ispisat će se spol osobe.

$ awk 'ispis ($ 3 == "Upravitelj") ? "Ime je" $ 1: "Spol je" $ 2 'osoba.txt

Izlaz:

Sljedeći će se izlaz pojaviti nakon izvršavanja skripte. Jedna osoba s „Menadžerskom profesijom postoji u osoba.txt. Dakle, ispisuje se ime jedne osobe, a za druge osobe rod.

Primjer-5: Korištenje više uvjeta u naredbi if

Logičko ILI i Logičko I mogu se koristiti za definiranje više uvjeta u uvjetnom izrazu skripte awk. Sljedeća skripta awk čita svaki redak zaposlenik.txt te provjerava dob i oznaku s određenim vrijednostima. Logički AND koristi se u ako stanje. Kada je dobna vrijednost veća ili jednaka 30 i oznaka je "HR", ispisat će se odgovarajući ID zaposlenika i plaća.

$ awk 'if ($ 3> = 30 && $ 2 == "HR") print "ID zaposlenika:",
$ 1, "i", "Plaća:", $ 4, "\ n"; 'zaposlenik.txt

Izlaz:

Sljedeći će se izlaz pojaviti nakon izvršavanja skripte. Postoji samo jedan zaposlenik s oznakom "HR" u zaposlenik.txt. Ovdje se ispisuju podaci o identitetu i plaći ovog zaposlenika.

Zaključak:

Najobičnija upotreba uvjetnog izraza bilo kojeg standardnog programiranja podržana je naredbom awk. Ovdje možete objasniti kako možete koristiti pojedinačne i višestruke uvjete u awk-u, koristeći vrlo jednostavne primjere. Nadam se da će nakon vježbanja ovih primjera učenik moći pravilno koristiti uvjetnu izjavu u awk skripti.

Kako koristiti AutoKey za automatizaciju Linux igara
AutoKey je uslužni program za automatizaciju radne površine za Linux i X11, programiran na Python 3, GTK i Qt. Koristeći njegovu skriptiranje i MACRO ...
Kako prikazati brojač FPS-a u Linux igrama
Linux gaming dobio je velik poticaj kada je Valve najavio Linux podršku za Steam klijent i njihove igre 2012. godine. Od tada su mnoge AAA i indie igr...
Kako preuzeti i igrati Sid Meier's Civilization VI na Linuxu
Uvod u igru Civilization 6 moderan je pogled na klasični koncept predstavljen u seriji igara Age of Empires. Ideja je bila prilično jednostavna; započ...