Syntaks:
Syntaksen for fire typer betingede utsagn er nevnt nedenfor.
- hvis uttalelse
uttalelse
Uttalelsen kjøres når if-tilstanden blir sant.
- if-else uttalelse
uttalelse-1
ellers
uttalelse-2
Uttalelsen-1 utføres når if-tilstanden er oppfylt, og setningen-2 utføres når den returneres falsk.
- if-elseif uttalelse
uttalelse-1
eller hvis
uttalelse-2
eller hvis
uttalelse-3
.. .
ellers
uttalelse-n
Denne betingede setningen brukes til å utføre en uttalelse basert på multiple if condition. Hvis den første tilstanden er falsk, sjekker den den andre tilstanden. Hvis den andre tilstanden er falsk, sjekker den den tredje tilstanden og så videre. Hvis alle forhold returnerer falske, vil den utføre erklæringen om annet.
- Ternær (?:) operatør
Ternær operatør kan brukes som et alternativ til if-else-uttalelse. Hvis tilstanden stemmer, vil setningen-1 utføre, og hvis tilstanden er falsk, vil setning-2 utføre.
Eksempel 1: Bruk enkelt hvis det er vanskelig
Lag en tekstfil med navnet ansatt.tekst med følgende innhold. Anta at du må finne ut avdelingsnavnet, alderen og lønnen til den ansatte hvis ID er 11002.
ansatt.tekst
11001 Salg 45 $ 300011002 HR 32 $ 1500
11003 Markedsføring 26 $ 1200
11004 HR 25 $ 2500
En enkel hvis-betingelse brukes i følgende skript for å søke på id 11002 i det første feltet i filen. Hvis tilstanden blir oppfylt, vil den skrive ut verdiene til de andre feltene på den tilsvarende linjen, ellers blir ingenting skrevet ut.
$ awk 'if ($ 1 == "11002")
skriv ut "Avdelingsnavn:", $ 2, "\ n";
skriv ut "Alder:", $ 3, "\ n";
skriv ut "Lønn:", $ 4, "\ n";
ansatt.tekst
Produksjon:
ID-en, 1102, finnes i filen. Så den trykte de andre verdiene til den ansatte.
Eksempel 2: Bruke if-else i awk
Anta at du vil skrive ut lønnsinformasjonen til de ansatte som har en alder under eller lik 40 og skrive ut aldersinformasjonen til andre ansatte. Følgende awk-skript kan gjøre denne oppgaven. Det er bare en ansatt i ansatt.tekst fil hvis alder er mer enn 40 år og alle andre ansattes alder er under 40 år.
$ awk 'hvis ($ 3 <= 40)
skriv ut "Lønnen på", $ 1, "er", $ 4, "\ n"
ellers
skriv ut "Alderen til", $ 1, "er", $ 3, "\ n"
'ansatt.tekst
Produksjon:
Følgende utdata vises etter kjøring av skriptet.
Eksempel 3: Bruke if-elseif i awk-skript
Opprett en tekstfil med navnet person.tekst med følgende innhold.
person.tekst
JACKSON Male BusinessMARTIN mannlig serviceholder
LILY Kvinnelig leder
ROBINSON Mannlig administrerende direktør
Opprett en awk-fil med navnet if_elseif.kjipt med følgende kode for å skrive ut favorittfargen til hver person hvis navn finnes i filen. If-elseif-setning brukes i skriptet for å utføre denne oppgaven. Skriptet vil lese den første feltverdien til filen, ansatt.tekst og sjekk med en bestemt verdi. Hvis den første hvis tilstanden blir falsk, vil den sjekke den andre hvis tilstand og så videre. Når noen hvis tilstanden blir oppfylt, tildeles en fargeverdi. Hvis alle forhold blir falske da Ingen vil bli tildelt som fargeverdi. Favorittfargen til hver person vil skrive ut eller “Fant ingen person” vil skrives ut hvis ingen personnavn stemmer overens.
if_elseif.kjipt
navn = $ 1;
if (name == "JACKSON") color = "Blue";
annet hvis (name == "MARTIN") color = "Black";
annet hvis (name == "LILY") color = "Red";
annet hvis (name == "ROBINSON") color = "White";
else color = "Ingen";
hvis (farge!= "Ingen") skriv ut "Favorittfargen til", navn, "er", farge;
annet trykk "Ingen person funnet";
Kjør følgende kommando for å utføre filen if_elseif.kjipt med person.tekst
$ awk -f if_elseif.kjipt person.tekstProduksjon:
Følgende utdata vises etter at du har kjørt kommandoen.
Eksempel 4: Bruke ternær operatør i awk
Det tredje feltet av person.tekst filen inneholder yrket til hver person. Følgende ternære operatør leser hver linje i filen og samsvarer den tredje feltverdien med “sjef”. Hvis verdien samsvarer, vil den skrive ut navnet på personen, ellers vil det skrive ut kjønnet til personen.
$ awk 'print ($ 3 == "Manager") ? "Navn er" $ 1: "Kjønn er" $ 2 'person.tekstProduksjon:
Følgende utdata vises etter utførelsen av skriptet. En person med "Manager-yrke finnes i person.tekst. Så navnet på en person skrives ut og kjønn skrives ut for andre personer.
Eksempel 5: Bruke flere forhold i if-setningen
Logisk ELLER og Logisk OG kan brukes til å definere flere forhold i betinget uttalelse av awk-skript. Følgende awk-skript leser hver linje av ansatt.tekst og sjekker alder og betegnelse med spesielle verdier. Logisk AND brukes i hvis tilstand. Når aldersverdien er større enn eller lik 30 og betegnelsen er “HR”, vil den tilsvarende ansattes ID og lønn skrives ut.
$ awk 'if ($ 3> = 30 && $ 2 == "HR") skriv ut "Medarbeider-id:",$ 1, "og", "Lønn:", $ 4, "\ n"; 'ansatt.tekst
Produksjon:
Følgende utdata vises etter utførelsen av skriptet. Det er bare én ansatt med betegnelsen "HR" i ansatt.tekst. Id og lønnsinformasjon for denne ansatte er skrevet ut her.
Konklusjon:
De vanligste bruksområdene av betinget uttalelse for standardprogrammering støttes av awk-kommando. Hvordan du kan bruke enkle og flere forhold i awk forklares ved å bruke veldig enkle eksempler her. Håper at etter å ha praktisert disse eksemplene, vil eleven kunne bruke betinget uttalelse riktig i awk-skript.