Hvordan du bruker for loop i awk -kommando

Hvordan du bruker for loop i awk -kommando
Loop brukes til å utføre noen uttalelser flere ganger. Iterasjonen av sløyfen basert på termineringsbetingelsen eller antallet matriseelementene. Tre typer løkker støttes av ethvert programmeringsspråk. For sløyfe er en av dem. For sløyfe kan erklæres på to måter. Enkelt for sløyfe inneholder tre deler. Og en annen for loop er for-i-loop som brukes til å iterere enhver liste over data eller matrise. Denne opplæringen viser bruken av disse to typene løkker i AWK -kommando ved å bruke forskjellige eksempler.

Syntaks:

  1. for sløyfe -erklæring:
for (initialisering; termineringsbetingelse; økning/reduksjon)
uttalelser

Den første delen brukes til å initialisere variabelen for start til Løkke. Den andre delen inneholder termineringsbetingelsen for å kontrollere iterasjonen av sløyfen og sløyfen vil fortsette til tilstanden er sann. Den siste delen vil øke eller redusere initialiseringsvariabelen basert på den første delen.

  1. for i erklæring
for (variabel i matrise/liste)
uttalelser

for i Loop brukes til å gjøre de oppgavene der antall iterasjon av løkken ikke er løst. for i Loop brukes hovedsakelig til å analysere en matrise eller liste over data. Loopen leser hver data fra matrisen eller listen og lagrer verdien til en variabel i hver iterasjon.

Eksempel 1: Bruker enkel for loop

En enkel for loop brukes i følgende skript. Her, disk Variabel initialiseres med 10 og sløyfen avsluttes når verdien av disk er mindre enn 5. Skriptet vil skrive ut disk verdier fra 10 til 5. Kjør kommandoen fra terminalen.

$ ekko | awk 'for (teller = 10; teller> = 5; teller--)
Skriv ut "Running for", Counter ", tider."," \ n "; '

Produksjon:

Følgende utgang vises etter å ha utført kommandoen.

Eksempel-2: Bruker for-in-loop for å lese en matrise

En matrise som heter kunde er erklært i følgende skript der kundens id er satt som en matriseindeks og kundens Navn settes som arrayverdi. for i Loop brukes her for å iterere hver indeks fra matrisen og skrive ut kundens navn. Kjør manuset fra terminalen.

$ ekko | awk 'begynn kunde ["4587"] = "Neil Johnson";
Kunde ["8953"] = "Ella Binte Nazir";
Kunde ["3455"] = "Bruce Hyslop";
Kunde ["6335"] = "Isabella";
Slutt for (jeg i kunde)
Skriv ut "navnet på", i, "er", kunde [i]
'

Produksjon:

Følgende utgang vises etter å ha utført skriptet.

Eksempel-3: Bruke nestet for sløyfe

Når en for sløyfe er erklært under en annen for sløyfe, kalles den nestet for loop. Den ytre sløyfen som brukes i dette skriptet vil iterere i 2 ganger, og den indre sløyfen vil iterere i 3 ganger. Så utskriftserklæringen vil utføres for, (2x3 = 6) 6 ganger. Kjør manuset fra terminalen.

$ ekko | awk 'slutt for (i = 1; i<=2; i++)
for (j = 1; j<=3; j++)
Skriv ut "iterating rad", i, "og kolonne", j, "\ n"; '

Produksjon:

Følgende utgang vises etter å ha kjørt skriptet.

Eksempel-4: Bruker for Loop med Break Statement

gå i stykker Uttalelse brukes i hvilken som helst sløyfe for å avslutte sløyfen før du når termineringsbetingelsen basert på den spesielle tilstanden. I det følgende skriptet vil for Loop starte fra 3 og det avsluttes når verdien av Jeg er større enn 20. Men når verdien av Jeg vil være lik variabelen Num da vil IF -tilstanden sant og sløyfen vil avslutte for gå i stykker uttalelse.

$ ekko | awk 'begynn num = 7; Slutt for (i = 3; i<=20; i++)
if (i == num) break;
ellers
Skriv ut "Gjeldende verdi av i =", i, "\ n"; '

Produksjon:

Her, hvis tilstanden er falsk for fire iterasjoner når verdien av Jeg er 3,4,5 og 6. Så følgende utgang skrives ut for de fire iterasjonene.

Eksempel-5: Bruker for Loop med fortsettelseserklæring

Fortsett uttalelse brukes i en hvilken som helst sløyfe for å utelate enhver uttalelse basert på en bestemt tilstand. En matrise som heter produkt er erklært i følgende skript. for i Loop brukes til å iterere matrisen og sjekke hver verdi med "Kontorprogramvare“. Hvis verdien samsvarer, vil en utilgjengelig melding skrives ut ved å utelate tilgjengelig melding for Continution -uttalelse, ellers vil utilgjengelig melding skrives ut. Kjør manuset fra terminalen.

$ ekko | awk 'begynn produkt ["1001"] = "antivirus";
produkt ["1002"] = "Office Software";
Produkt ["1003"] = "tegningsprogramvare";
produkt ["1004"] = "HDD";
produkt ["1005"] = "dvd"; slutt for (i in produkt)
if (produkt [i] == "Office Software")
Print Product [i], "er ikke tilgjengelig \ n";
Fortsette;

Print Product [i], "er tilgjengelig", "\ n"; '

Produksjon:

Følgende utgang vises etter å ha kjørt skriptet.

Eksempel-6: Bruker for loop i AWK-fil

Lag en tekstfil som heter Salg.tekst og legg til følgende innhold for å øve på dette eksemplet.

Salg.tekst

2015 70000
2016 80000
2017 83000
2018 86000
2019 90000

Lag en AWK -fil som heter cal_sal.awk med følgende skript for å beregne det totale salgsbeløpet til filen Salg.tekst. Det andre feltet inneholder det årlige salgsbeløpet i filen Salg.tekst. I manuset, salgene Array vil lagre alle verdier av det andre feltet og sum variabel initialiseres med 0 for å legge til alle verdier av Salg Array. NESTE, for i sløyfe brukes til å iterere hvert element av salgene matrise og legge til verdien med sum variabel. Til slutt brukes utskriftserklæring til å skrive ut verdien av sum variabel for å vise det totale salgsbeløpet.

cal_sal.awk


Salg [i ++] = $ 2;
sum = 0;

SLUTT
for (jeg i salg)

sum = sum+salg [i];

Skriv ut "Totalt salgsbeløp =" Sum;

Kjør følgende kommando for å utføre skriptet til Cal_sal.AWK -fil.

$ awk -f cal_sal.awk salg.tekst

Produksjon:

Det er 5 poster i Salg.tekst filen og summen av salgsbeløpet er 409000 som er skrevet ut etter å ha utført skriptet.

Konklusjon:

Ulike bruksområder for for loop i AWK -kommandoen blir prøvd å forklare i denne opplæringen. Håper, leseren vil få en klar ide om bruk for loop i AWK -manus og kan bruke til sløyfe riktig i AWK -programmering.