Awk

Kaip komandoje awk naudoti sąlyginį sakinį

Kaip komandoje awk naudoti sąlyginį sakinį
Sąlyginis sakinys naudojamas bet kuria programavimo kalba, norint vykdyti bet kurį teiginį pagal tam tikrą sąlygą. Sąlyginis sakinys vykdomas pagal reikšmę true arba false, kai programoje sąlyginis sakinys parašomi if-else ir if-elseif sakiniai. „Awk“ palaiko visų tipų sąlyginius teiginius, kaip ir kitas programavimo kalbas.  Kaip skirtingi sąlyginiai sakiniai gali būti naudojami komandoje awk, parodyta šioje pamokoje.

Sintaksė:

Toliau minima keturių sąlyginių sakinių tipų sintaksė.

  1. jei teiginys
jei (sąlyga)
pareiškimas

Teiginys vykdomas, kai sąlyga if grįžta teisinga.

  1. jei-dar teiginys
jei (sąlyga)
pareiškimas-1

Kitas
pareiškimas-2

Teiginys-1 vykdomas, kai sąlyga „if“ yra teisinga, o teiginys-2 - tada, kai grįžta klaidinga.

  1. if-elseif teiginys
jei (sąlyga)
pareiškimas-1

elseif
pareiškimas-2

elseif
pareiškimas-3

… .
Kitas
pareiškimas-n

Šis sąlyginis sakinys naudojamas vykdant teiginį, pagrįstą „multi if if“ sąlyga. Jei pirmoji sąlyga yra klaidinga, ji patikrina antrąją sąlygą. Jei antroji sąlyga yra klaidinga, ji tikrina trečiąją sąlygą ir pan. Jei visos sąlygos bus neteisingos, jis įvykdys kitos dalies teiginį.

  1. Trinaris (?:) operatorius
(sąlyga) ? pareiškimas-1: pareiškimas-2

Ternary operatorius gali būti naudojamas kaip alternatyva if-else teiginiui. Jei sąlyga teisinga, įvykdys teiginys-1 ir jei klaidinga sąlyga, tada įvykdys teiginį-2.

1 pavyzdys: naudojant paprastą, jei yra awk

Sukurkite tekstinį failą pavadinimu darbuotojas.txt turinį. Tarkime, jūs turite sužinoti darbuotojo, kurio ID yra 11002, skyriaus pavadinimą, amžių ir atlyginimą.

darbuotojas.txt

11001 Pardavimas 45 3000 USD
11002 HR 32 1500 USD
11003 Rinkodara 26 1200 USD
11004 HR 25 2500 USD

Paprasta „if“ sąlyga šiame scenarijuje naudojama norint ieškoti ID 11002 pirmajame failo lauke. Jei sąlyga taps teisinga, ji atspausdins kitų atitinkamos eilutės laukų reikšmes, kitaip niekas nebus spausdinama.

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

atspausdinti „Departamento pavadinimas:“, 2 USD, „\ n“;
spausdinti „Amžius:“, 3 USD, „\ n“;
spausdinti „Atlyginimas:“, 4 USD, „\ n“;
 

' darbuotojas.txt

Išvestis:

Faile yra ID 1102. Taigi atspausdino kitas darbuotojo vertybes.

2 pavyzdys: if-else naudojimas awk

Tarkime, norite atspausdinti darbuotojų, kurių amžius yra mažesnis arba lygus 40, atlyginimų informaciją ir atspausdinti kitų darbuotojų amžiaus informaciją. Šis awk scenarijus gali atlikti šią užduotį. Yra tik vienas darbuotojas darbuotojas.txt byla, kurios amžius yra didesnis nei 40 metų, o visų kitų darbuotojų amžius yra mažesnis nei 40 metų.

$ awk '
jei (3 USD <= 40)

spausdinti „Atlyginimas“, 1 USD, „yra“, 4 USD, \ n "

Kitas

spausdinti „Amžius“, 1 USD, „yra“, 3 USD, „\ n“

 
' darbuotojas.txt

Išvestis:

Ši išvestis pasirodys paleidus scenarijų.

3 pavyzdys: if-elseif naudojimas awk scenarijuje

Sukurkite tekstinį failą, pavadintą asmuo.txt su tokiu turiniu.

asmuo.txt

JACKSON vyrų verslas
„MARTIN“ vyrų tarnybos savininkas
LILY Moterų vadybininkė
ROBINSON Vyras generalinis direktorius

Sukurkite awk failą pavadinimu if_elseif.awk su šiuo kodu norėdami išspausdinti mėgstamą kiekvieno asmens, kurio vardas yra faile, spalvą. Šiai užduočiai atlikti scenarijuje naudojamas sakinys „If-elseif“. Scenarijus nuskaitys pirmąją failo lauko vertę, darbuotojas.txt ir patikrinkite su tam tikra verte. Jei pirmasis jei sąlyga tampa klaidinga, tada ji patikrins antrąją jei būklė ir pan. Kai kuri nors sąlyga taps teisinga, bus priskirta spalvos reikšmė. Jei visos sąlygos tampa klaidingos, tada Nė vienas bus priskirta spalvos vertei. Mėgstamiausia kiekvieno žmogaus spalva atspausdins arba „Nerastas asmuo“ atspausdins, jei nesutaps nė vieno asmens vardas.

if_elseif.awk


vardas = 1 USD;
if (vardas == "JACKSON") spalva = "Mėlyna";
else if (vardas == "MARTIN") spalva = "juoda";
else if (vardas == "LILY") spalva = "Raudona";
else if (vardas == "ROBINSON") spalva = "Balta";
kita spalva = "Nėra";
 
jei (spalva!= "Nėra") spausdinti "Mėgstamiausia spalva, pavadinimas," yra ", spalva;
kitur spauskite „Nerastas asmuo“;
 

Vykdykite šią komandą, kad įvykdytumėte failą if_elseif.awk su asmeniu.txt

$ awk -f if_elseif.awk asmuo.txt

Išvestis:

Paleidus komandą pasirodys toks išvestis.

4 pavyzdys: trikampio operatoriaus naudojimas awk

Trečiasis laukas asmuo.txt byloje yra kiekvieno asmens profesija. Šis trijų komponentų operatorius nuskaito kiekvieną failo eilutę ir sutampa su trečiąja lauko reikšme „Vadybininkas“. Jei vertė sutampa, ji atspausdins asmens vardą, o kitu atveju atspausdins asmens lytį.

$ awk 'print ($ 3 == "Vadybininkas") ? „Vardas yra„ $ 1 “:„ Lytis yra „$ 2“ asmuo.txt

Išvestis:

Vykdant scenarijų bus rodoma ši išvestis. Vienas asmuo, turintis „Vadovo profesiją“ asmuo.txt. Taigi, atspausdinamas vieno asmens vardas, o kitiems - lytis.

5 pavyzdys: kelių sąlygų naudojimas if sakinyje

„Logical OR“ ir „Logical AND“ gali būti naudojamos apibrėžiant kelias sąlygas sąlyginiame „awk“ scenarijaus sakinyje. Šis awk scenarijus nuskaito kiekvieną eilutę darbuotojas.txt ir tikrina amžių bei paskirtį nurodydamas tam tikras vertes. Loginis IR yra naudojamas jei būklė. Kai amžiaus vertė yra didesnė arba lygi 30 ir paskirta „HR“, bus spausdinamas atitinkamas darbuotojo tapatybės dokumentas ir atlyginimas.

$ awk 'if ($ 3> = 30 && $ 2 == "HR") spausdinti "Darbuotojo ID:",
1 USD, „ir“, „Atlyginimas:“, 4 USD, „\ n"; 'darbuotojas.txt

Išvestis:

Vykdant scenarijų bus rodoma ši išvestis. Yra tik vienas darbuotojas, turintis „HR“ pavadinimą darbuotojas.txt. Informacija apie šio darbuotojo tapatybę ir atlyginimą spausdinama čia.

Išvada:

Dažniausiai bet kurio standartinio programavimo sąlyginio sakinio naudojimą palaiko komanda awk. Kaip galite naudoti vieną ir kelias sąlygas awk, paaiškinta naudojant čia labai paprastus pavyzdžius. Tikimės, kad, išmokęs šių pavyzdžių, mokinys galės tinkamai naudoti sąlyginį teiginį awk scenarijuje.

Kaip parodyti FPS skaitiklį „Linux“ žaidimuose
„Linux“ žaidimai gavo didelį postūmį, kai „Valve“ paskelbė „Linux“ palaikymą „Steam“ klientui ir jų žaidimams 2012 m. Nuo tada daugelis AAA ir indie ž...
Kaip atsisiųsti ir paleisti „Sid Meier Civilization VI“ sistemoje „Linux“
Įvadas į žaidimą „Civilization 6“ yra šiuolaikinė klasikinės koncepcijos, pristatytos „Age of Empires“ žaidimų serijoje, koncepcija. Idėja buvo gana p...
Kaip įdiegti ir žaisti „Doom“ sistemoje „Linux“
Įvadas į Doom „Doom“ serija atsirado 90-aisiais, išleidus originalų „Doom“. Tai buvo tiesioginis hitas, o nuo to laiko žaidimų serija gavo daugybę apd...