Awk

Kā izmantot masīvu awk komandā

Kā izmantot masīvu awk komandā
Masīva mainīgo izmanto vairāku datu glabāšanai. Vairāku datu glabāšanai to atbalsta lielākā daļa programmēšanas valodu. Masīvam ir divas daļas. Tās ir atslēga un vērtība. Atslēga tiek izmantota, lai piekļūtu vērtības atrašanās vietai. Masīvs var būt skaitlisks un asociatīvs. Skaitliskais masīvs kā atslēga atbalsta tikai skaitlisko vērtību, un asociatīvais masīvs kā atslēgu atbalsta gan skaitlisko, gan indeksu vērtību. Asociatīvo masīvu atbalsta komanda awk. Kā jūs varat definēt, piekļūt vai modificēt komandu asociatīvo masīvu awk, ir parādīts šajā apmācībā, izmantojot dažādus piemērus.

Sintakse:

arrayName [Key] = Vērtība

Masī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ĀKT
studenti ["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

Kokteilis
Paipalas
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; nizdrukāt awkArray [n], "\ n"; 'putns.txt

Izeja:

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

Apple
apelsī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ā.

Komerciālo spēļu dzinēju atvērtā koda porti
Bezmaksas, atvērtā koda un starpplatformu spēļu dzinēju atpūtu var izmantot, lai spēlētu vecos, kā arī dažus no diezgan nesenajiem spēļu nosaukumiem. ...
Labākās komandrindas spēles Linux
Komandrinda nav tikai lielākais sabiedrotais, lietojot Linux, bet tā var būt arī izklaides avots, jo to var izmantot, lai spēlētu daudzas jautras spēl...
Labākās Linux spēļu gamepad kartēšanas lietotnes
Ja jums patīk spēlēt spēles Linux ar parastu tastatūru, nevis parasto tastatūru un peles ievades sistēmu, jums ir dažas noderīgas lietotnes. Daudzas d...