Awk

Kā izmantot ciklu awk komandā

Kā izmantot ciklu awk komandā
Loop tiek izmantots, lai vairākas reizes izpildītu dažus paziņojumus. Cilpas atkārtojums, pamatojoties uz izbeigšanas nosacījumu vai masīva elementu skaitu. Trīs veidu cilpas atbalsta jebkura programmēšanas valoda. Jo cilpa ir viena no tām. Par cilpu var deklarēt divējādi. Vienkāršā cilpa satur trīs daļas.  Un vēl viena cilpa ir for-in cilpa, ko izmanto, lai atkārtotu jebkuru datu sarakstu vai masīvu. Šī apmācība parāda šo divu veidu cilpu izmantošanu komandā awk, izmantojot dažādus piemērus.

Sintakse:

  1. cilpas deklarācijai:
par (inicializācija; pārtraukšanas nosacījums; pieaugums / samazinājums)
paziņojumi

Pirmo daļu izmanto, lai inicializētu mainīgo sākšanai priekš cilpa. Otrajā daļā ir ietverts izbeigšanas nosacījums, lai kontrolētu cilpas atkārtojumu, un cilpa turpināsies, līdz nosacījums ir patiess. Pēdējā daļa palielinās vai samazinās inicializācijas mainīgo, pamatojoties uz pirmo daļu.

  1. deklarācija
par (mainīgais masīvā / sarakstā)
paziņojumi

for-in cilpa tiek izmantota to uzdevumu veikšanai, kur cilpas atkārtojuma skaits nav noteikts. for-in cilpa galvenokārt tiek izmantota, lai parsētu masīvu vai datu sarakstu. Cilpa nolasa visus datus no masīva vai saraksta un katrā atkārtojumā saglabā vērtību mainīgajam.

1. piemērs: vienkāršā izmantošana ciklam

Vienkāršais cilpa tiek izmantots šajā skriptā. Šeit, skaitītājs mainīgais tiek inicializēts ar 10, un cilpa tiks pārtraukta, kad vērtība skaitītājs ir mazāks par 5. Skripts izdrukās skaitītājs vērtības no 10 līdz 5. Palaidiet komandu no termināla.

$ atbalss | awk 'par (skaitītājs = 10; skaitītājs> = 5; skaitītājs--)
drukāt "Running for", counter, "times."," \ n "; '

Izeja:

Pēc komandas izpildes parādīsies šāda izeja.

2. piemērs: Ievades cilpa izmantošana masīva nolasīšanai

Masīvs ar nosaukumu Klients tiek deklarēts šādā skriptā, kur klients id ir iestatīts kā masīva indekss un klienta indekss nosaukums ir iestatīta kā masīva vērtība. for-in cilpa šeit tiek izmantota, lai atkārtotu katru indeksu no masīva un izdrukātu klienta vārdu. Palaidiet skriptu no termināla.

$ atbalss | awk 'BEGIN Klients ["4587"] = "Nīls Džonsons";
Klients ["8953"] = "Ella binte Nazir";
Klients ["3455"] = "Brūss Hyslops";
Klients ["6335"] = "Izabella";
 
END par (i klientā)
drukāt "nosaukums", i, "ir", klients [i]

Izeja:

Pēc skripta izpildes parādīsies šāda izeja.

3. piemērs: ligzdotu cilpu izmantošana

Kad cilpa for for deklarēta zem citas cilpa, to sauc par ligzdotu cilpu. Šajā skriptā izmantotā ārējā cilpa atkārtosies 2 reizes, bet iekšējā cilpa - 3 reizes. Tātad, izdrukātais paziņojums tiks izpildīts, (2X3 = 6) 6 reizes. Palaidiet skriptu no termināla.

$ atbalss | awk 'END par (i = 1; i<=2; i++)
par (j = 1; j<=3; j++)
izdrukāt "Iterating row", i, "and column", j, "\ n"; '

Izeja:

Pēc skripta palaišanas parādīsies šāda izeja.

4. piemērs: Cilpai ar pārtraukuma izmantošanu

pārtraukums paziņojums tiek izmantots jebkurā cilpā, lai pārtrauktu cilpu, pirms tiek sasniegts izbeigšanas nosacījums, pamatojoties uz konkrēto nosacījumu. Šajā skriptā cilpa sāksies no 3, un tā beigsies, kad vērtība i ir lielāks par 20. Bet, kad vērtība i būs vienāds ar mainīgo num tad, ja nosacījums būs patiess, un cilpa tiks pārtraukta pārtraukums paziņojums, apgalvojums.

$ atbalss | awk 'SĀKT num = 7; END par (i = 3; i<=20; i++)
ja (i == skaits) pārtraukums;
cits
drukāt "Pašreizējā vērtība i =", i, "\ n"; '

Izeja:

Lūk, ja nosacījums ir kļūdains četrām atkārtojumiem, kad vērtība i ir 3,4,5 un 6. Tātad četrām atkārtojumiem tiek izdrukāta šāda izeja.

5. piemērs: izmantošana ciklam ar turpinājuma paziņojumu

Turpināt paziņojums tiek izmantots jebkurā cilpā, lai izlaistu jebkuru paziņojumu, pamatojoties uz konkrētu nosacījumu. Masīvs ar nosaukumu produktu ir deklarēts šādā rakstā. for-in cilpa tiek izmantota, lai atkārtotu masīvu un pārbaudītu katru vērtību ar “Biroja programmatūra“. Ja vērtība sakrīt, tiks drukāts nepieejams ziņojums, izlaižot pieejamo ziņojumu turpinājuma paziņojumam, pretējā gadījumā tiks drukāts nepieejams ziņojums. Palaidiet skriptu no termināla.

$ atbalss | awk 'BEGIN produkts ["1001"] = "Antivīruss";
produkts ["1002"] = "Biroja programmatūra";
produkts ["1003"] = "Zīmēšanas programmatūra";
produkts ["1004"] = "HDD";
produkts ["1005"] = "DVD"; END priekš (i produktā)
if (produkts [i] == "Biroja programmatūra")
drukas produkts [i], "nav pieejams \ n";
Turpināt;

drukas produkts [i], "ir pieejams", "\ n"; '

Izeja:

Pēc skripta palaišanas parādīsies šāda izeja.

6. piemērs: cilnes izmantošana awk failā

Izveidojiet teksta failu ar nosaukumu pārdošana.txt un pievienojiet šādu saturu, lai praktizētu šo piemēru.

pārdošana.txt

2015 70000
2016 80000
2017 83000
2018 86000
2019. gads 90000

Izveidojiet awk failu ar nosaukumu cal_sal.awk ar šādu skriptu, lai aprēķinātu kopējo faila pārdošanas apjomu pārdošana.txt. Otrajā laukā ir faila gada pārdošanas summa pārdošana.txt. Scenārijā, pārdošanu masīvs glabās visas otrā lauka un summa mainīgais tiek inicializēts ar 0, lai pievienotu visas vērtības pārdošana masīvs. Nākamais, for-in cilpa tiek izmantota katra elementa atkārtošanai pārdošanu masīvs un pievienojiet vērtību ar summa mainīgais. Visbeidzot, drukāt paziņojumu tiek izmantots, lai izdrukātu vērtību summa mainīgais, lai parādītu kopējo pārdošanas summu.

cal_sal.awk


pārdošanas apjomi [i ++] = 2 ASV dolāri;
summa = 0;

END
par (i pārdošanā)

summa = summa + pārdošanas apjomi [i];

izdrukāt "Kopējā pārdošanas summa =" summa;

Izpildiet šo komandu, lai izpildītu cal_sal skriptu.awk fails.

$ awk -f cal_sal.awk pārdošana.txt

Izeja:

Vietnē ir 5 ieraksti pārdošana.txt failu un pārdošanas summa ir 409000, kas tiek izdrukāta pēc skripta izpildes.

Secinājums:

Šajā apmācībā ir mēģināts izskaidrot komandu loop in awk dažādus lietojumus. Ceru, ka lasītājs iegūs skaidru priekšstatu par cikla izmantošanu awk skriptā un spēs pareizi izmantot cilpu awk programmēšanā.

Labākās spēles, ko spēlēt ar rokas izsekošanu
Oculus Quest nesen iepazīstināja ar lielisku ideju par rokas izsekošanu bez kontrolieriem. Ar arvien lielāku spēļu un aktivitāšu skaitu, kas atbalsta ...
Kā parādīt OSD pārklājumu pilnekrāna Linux lietotnēs un spēlēs
Spēlējot pilnekrāna spēles vai lietojot lietotnes bez atrautības pilnekrāna režīmā, jūs varat izslēgt no attiecīgās sistēmas informācijas, kas redzama...
Top 5 spēļu tveršanas kartes
Mēs visi esam redzējuši un mīlējuši straumēšanas spēles pakalpojumā YouTube. PewDiePie, Jakesepticye un Markiplier ir tikai daži no labākajiem spēlētā...