Sintakse:
arrayName [Key] = VērtībaMasīva mainīgajam ir jādeklarē nosaukums. arrayName šeit ir masīva nosaukums. Katram masīvam, lai definētu, jāizmanto trešā iekava taustiņu vai indekss un tā būs jebkura asociatīvā masīva virknes vērtība. Vērtība var būt jebkura rakstzīme, skaitlis vai virkne, kas tiks glabāta masīva konkrētajā indeksā.
1. piemērs: Viendimensiju masīva definēšana un nolasīšana awk
Viendimensiju masīvā var saglabāt vienas kolonnas datu sarakstu. Šāda veida masīvā katram masīva elementam ir viena atslēga un vērtība. Šo masīvu var izmantot komandā awk tāpat kā citas programmēšanas valodas. Šajā piemērā masīvs ar nosaukumu grāmata tiek deklarēts ar trim elementiem, un cilpa tiek izmantota katra elementa lasīšanai un drukāšanai. Izpildiet šo komandu no termināļa.
$ atbalss | awk 'BEGIN book ["HTML"] = "HTML kabatas ceļvedis 2010";grāmata ["JS"] = "Efektīvs JavaScript";
grāmata ["CSS"] = "Mācīties tīmekļa dizainu";
END drukāšanai (i grāmatā) "Book of", i, "is", book [i]; '
Izeja:
2. piemērs: Divdimensiju masīva definēšana un nolasīšana awk
Divdimensiju masīvs tiek izmantots tabulāru datu saraksta glabāšanai, kas satur fiksētu rindu un kolonnu skaitu. Divdimensiju masīvs ar nosaukumiem studenti ir deklarēts šajā piemērā, kas satur trīs elementus. Šeit kā masīva galvenās vērtības tiek izmantots studenta ID un vārds. Tāpat kā iepriekšējais piemērs, for-in cilpa tiek izmantota awk skriptā, lai izdrukātu masīva vērtības. Palaidiet šo skriptu no termināla.
$ atbalss | awk 'SĀKTstudenti ["87462, Mohammed Ali"] = 87;
studenti ["98376, Sakib Al Hasan"] = 99;
studenti ["79937, Musfikur Rahman"] = 88;
drukāt "(ID, nosaukums) => Marks";
END par (i studentos) drukāšanai "(", i, ") =>", studentiem [i];
Izeja:
3. piemērs: Masīva elementa dzēšana
Jebkuru masīva vērtību var izdzēst, pamatojoties uz atslēgas vērtību. Šeit, grāmata masīvs ar trim elementiem ir definēts skripta sākumā. Tālāk atslēgas vērtība HTML tiek izdzēsts, izmantojot dzēst komandu. Elementa vērtība HTML taustiņš tiek drukāts pirms un pēc dzēst komandu. Palaidiet šo komandu, lai pārbaudītu izvadi.
$ atbalss | awk 'BEGIN book ["HTML"] = "HTML kabatas ceļvedis 2010";grāmata ["JS"] = "Efektīvs JavaScript";
grāmata ["CSS"] = "Mācīties tīmekļa dizainu";
izdrukāt "Pirms dzēšanas -", grāmatu ["HTML"];
dzēst grāmatu ["HTML"];
izdrukāt "\ nPēc dzēšanas -, grāmatu [" HTML "]; '
Izeja:
Rezultāts parāda, ka vērtība HTML indekss pēc izpildes ir tukšs dzēst komandu.
4. piemērs: Bash masīva nolasīšana awk
Iepriekšējos piemēros masīvs tiek deklarēts komandā awk un iterēts ar for-in cilpu. Bet jūs varat izlasīt jebkuru bash masīvu ar awk skriptu. Šajā piemērā nosaukts bash masīvs lang tiek deklarēts pirmajā komandā. Otrajā komandā bash masīva vērtības tiek pārsūtītas komandā awk, kas visus elementus glabā awk masīvā ar nosaukumu awkArray. Masīva awkArray vērtības tiek izdrukātas, izmantojot cilpu. Palaidiet šo komandu no termināla, lai pārbaudītu izvadi.
$ lang = ("PHP" "ASP" "JSP" "C #" "C ++")$ printf '% s \ n' "$ lang [@]" | awk 'awkArray [NR] = $ 1 END par
(i in awkArray) izdrukājiet awkArray [i], "\ n";
5. piemērs: faila satura nolasīšana awk masīvā
Jebkura faila saturu var nolasīt, izmantojot awk masīvu. Izveidojiet teksta failu ar nosaukumu putns.txt ar zemāk norādīto saturu.
putns.txt
KokteilisPaipalas
Pelēkais papagailis
Baazigar
Programmas satura nolasīšanai tiek izmantots šāds awk skripts putns.txt failu un saglabājiet vērtības masīvā, awkArray. for loop tiek izmantots, lai parsētu masīvu un izdrukātu vērtības terminālā. Palaidiet šo skriptu no termināla.
$ awk 'awkArray [skaitītājs ++] = $ 1; END par (n = 0; nIzeja:
Skripts izdrukā putns.txt.
6. piemērs: Ierakstu dublikātu noņemšana no faila
skriptu awk var izmantot, lai noņemtu datu dublikātus no jebkura teksta faila. Izveidojiet teksta failu ar nosaukumu augļi.txt ar šādu saturu. Failā ir divi datu dublikāti. Šie ir Apple un apelsīns.
augļi.txt
Appleapelsīns
Vīnogu
Apple
Banāns
apelsīns
Gvajava
Šis awk skripts nolasīs visas teksta faila rindas, augļi.txt un pārbaudiet, vai pašreizējā rinda masīvā pastāv vai nav, arr. Ja līnija pastāv masīvā, tā netiks saglabāta līnija masīvā un netiks izdrukāta vērtība terminālā. Tātad skripts glabā masīvā un drukā tikai unikālās līnijas no faila. Palaidiet komandas no termināla.
$ kaķu augļi.txt$ awk '!($ 0 in arr) print arr [$ 0], $ 0; 'augļi.txt
Izeja:
Pirmais izdrukās faila saturu, augļus.txt un otrā komanda izdrukās augļu saturu.txt pēc faila rindu dublikātu izlaišanas.
Secinājums:
Šajā apmācībā tiek parādīti masīva dažādi izmantošanas veidi awk skriptā, izmantojot dažādus piemērus ar skaidrojumu. Bash masīvam un jebkuram teksta faila saturam var piekļūt arī, izmantojot awk masīvu. Ja awk programmēšanā esat jauns, tad šī apmācība palīdzēs jums no pamata uzzināt awk masīva izmantošanas veidus, un jūs varēsiet pareizi izmantot masīvu awk skriptā.