Syntaxis:
De syntaxis voor vier soorten voorwaardelijke instructies wordt hieronder vermeld:.
- if-verklaring
uitspraak
De instructie wordt uitgevoerd wanneer de if-voorwaarde true retourneert.
- if-else verklaring
verklaring-1
anders
verklaring-2
De instructie-1 wordt uitgevoerd wanneer de if-voorwaarde waar is en de instructie-2 wordt uitgevoerd wanneer de if-retour onwaar is.
- if-elseif statement
verklaring-1
anders
verklaring-2
anders
verklaring-3
… .
anders
verklaring-n
Deze voorwaardelijke instructie wordt gebruikt voor het uitvoeren van een instructie op basis van meerdere if-voorwaarde. Als de eerste voorwaarde onwaar is, wordt de tweede voorwaarde gecontroleerd. Als de tweede voorwaarde onwaar is, wordt de derde voorwaarde gecontroleerd, enzovoort. Als alle voorwaarden false retourneren, wordt de instructie van else part uitgevoerd.
- ternair (?:) operator
Ternaire operator kan worden gebruikt als alternatief voor if-else-statement. Als de voorwaarde waar is, wordt statement-1 uitgevoerd en als de voorwaarde onwaar is, wordt statement-2 uitgevoerd.
Voorbeeld-1: Simple if in awk . gebruiken
Maak een tekstbestand met de naam werknemer.tekst met de volgende inhoud:. Stel dat u de afdelingsnaam, leeftijd en salaris moet achterhalen van de werknemer wiens id 11002 is.
werknemer.tekst
11001 Verkoop 45 $ 300011002 HR 32 $1500
11003 Marketing 26 $1200
11004 HR 25 $2500
Een eenvoudige if-voorwaarde wordt gebruikt in het volgende script om de id 11002 in het eerste veld van het bestand te zoeken. Als de voorwaarde waar wordt, worden de waarden van de andere velden van de overeenkomstige regel afgedrukt, anders wordt er niets afgedrukt.
$ awk 'als($1 =="11002")
print "Afdelingsnaam: ",$2,"\n";
print "Leeftijd: ",$3,"\n";
print "Salaris: ",$4,"\n";
' medewerker.tekst
Uitgang:
De id, 1102 bestaat in het bestand. Dus het drukte de andere waarden van de werknemer af.
Voorbeeld-2: if-else gebruiken in awk
Stel, u wilt de salarisgegevens afdrukken van de werknemers met een leeftijd lager dan of gelijk aan 40 en de leeftijdsgegevens van andere werknemers afdrukken. Het volgende awk-script kan deze taak uitvoeren:. Er is maar één medewerker in werknemer.tekst dossier waarvan de leeftijd hoger is dan 40 en de leeftijd van alle andere werknemers lager is dan 40.
$ awk 'als ($ 3 <= 40)
print "Het salaris van ",$1, " is ", $4, "\n"
anders
print "De leeftijd van ",$1, " is ", $3, "\n"
' medewerker.tekst
Uitgang:
De volgende uitvoer zal verschijnen na het uitvoeren van het script:.
Voorbeeld-3: if-elseif gebruiken in awk-script
Maak een tekstbestand met de naam person.txt met de volgende inhoud.
persoon.tekst
JACKSON Man ZakelijkMARTIN Man Diensthouder
LILY Vrouw Manager
ROBINSON Man CEO
Maak een awk-bestand met de naam if_elseif.awk met de volgende code om de favoriete kleur af te drukken van elke persoon wiens naam in het bestand voorkomt:. Als-elseif-instructie wordt in het script gebruikt om deze taak uit te voeren. Het script leest de eerste veldwaarde van het bestand, werknemer.tekst en controleer met een bepaalde waarde. Als de eerste als voorwaarde wordt onwaar, dan zal het de tweede controleren als staat en ga zo maar door. Wanneer een van de voorwaarden waar wordt, wordt een kleurwaarde toegewezen. Als alle voorwaarden onwaar worden, Geen wordt toegewezen als de kleurwaarde. De favoriete kleur van elke persoon wordt afgedrukt of “Geen persoon gevonden” wordt afgedrukt als geen persoonsnaam overeenkomt.
if_elseif.awk
naam=$1;
if ( name=="JACKSON" ) color="Blauw";
else if (name=="MARTIN") color="Black";
anders if (name=="LILY") color="Rood";
else if (name=="ROBINSON") color="Wit";
anders kleur = "Geen";
als (kleur)!="Geen") print "De favoriete kleur van", naam, "is", kleur;
anders print "Geen persoon gevonden";
Voer de volgende opdracht uit om het bestand if_elseif . uit te voeren.awk met persoon.tekst
$ awk -f if_elseif.awk persoon.tekstUitgang:
De volgende uitvoer verschijnt na het uitvoeren van de opdracht:.
Voorbeeld-4: ternaire operator gebruiken in awk
Het derde veld van persoon.tekst bestand bevat het beroep van elke persoon. De volgende ternaire operator leest elke regel van het bestand en matcht de derde veldwaarde met "Manager”. Als de waarde overeenkomt, wordt de naam van de persoon afgedrukt en anders wordt het geslacht van de persoon afgedrukt.
$ awk ' print ($3=="Manager") ? "Naam is" $1: "Geslacht is" $2' persoon.tekstUitgang:
De volgende uitvoer zal verschijnen na het uitvoeren van het script:. Eén persoon met "Beroep van manager bestaat in de" persoon.tekst. Dus de naam van één persoon wordt afgedrukt en het geslacht wordt afgedrukt voor andere personen.
Voorbeeld-5: Meerdere voorwaarden gebruiken in if-statement
Logische OR en Logische AND kunnen worden gebruikt om meerdere voorwaarden te definiëren in de voorwaardelijke instructie van awk-script. Het volgende awk-script leest elke regel van: werknemer.tekst en controleert de leeftijd en aanduiding met bepaalde waarden. Logische AND wordt gebruikt in de als staat. Wanneer de leeftijdswaarde groter is dan of gelijk is aan 30 en de aanduiding "HR" is, worden de bijbehorende werknemers-ID en het salaris afgedrukt.
$ awk ' if ($3 >= 30 && $2 == "HR") print "Werknemer-ID: ",$1, " en ", "Salaris: ", $4, "\n";' werknemer.tekst
Uitgang:
De volgende uitvoer zal verschijnen na het uitvoeren van het script:. Er is slechts één werknemer met de aanduiding “HR” in werknemer.tekst. ID- en salarisgegevens voor deze werknemer worden hier afgedrukt.
Conclusie:
Het meest voorkomende gebruik van de voorwaardelijke instructie van een standaardprogrammering wordt ondersteund door het awk-commando. Hoe u enkele en meerdere voorwaarden in awk kunt gebruiken, wordt hier uitgelegd aan de hand van zeer eenvoudige voorbeelden. Ik hoop dat de leerling na het oefenen van deze voorbeelden in staat zal zijn om de voorwaardelijke instructie correct te gebruiken in het awk-script.