Awk

Kaip naudoti masyvą komandoje awk

Kaip naudoti masyvą komandoje awk
Masyvo kintamasis naudojamas daugiau nei vieniems duomenims saugoti. Daugeliui programavimo kalbų palaiko kelis duomenis. Masyvas turi dvi dalis. Tai yra raktas ir vertė. Raktas naudojamas norint pasiekti vertės vietą. Masyvas gali būti skaitinis ir asociatyvus. Skaitmeninis masyvas palaiko tik skaitinę reikšmę kaip raktą, o asociatyvusis masyvas - tiek skaičių, tiek indekso reikšmę kaip raktą. Asociatyvusis masyvas palaikomas komanda awk. Kaip apibrėžti, pasiekti ar modifikuoti asociacinį masyvą komandoje „awk“, šioje instrukcijoje parodyta naudojant įvairius pavyzdžius.

Sintaksė:

arrayName [Key] = reikšmė

Masyvo kintamojo vardas turi būti deklaruojamas. arrayName čia yra masyvo pavadinimas. Kiekvienas masyvas turi naudoti trečią skliaustą, kad apibrėžtų Raktas arba indeksas ir tai bus bet kokia asociatyvaus masyvo eilutės reikšmė. Vertė gali būti bet koks simbolis, skaičius ar eilutė, kuri bus saugoma tam tikrame masyvo rodyklėje.

1 pavyzdys: Vienmatės masyvo apibrėžimas ir skaitymas awk

Vienmatis masyvas gali išsaugoti vieno stulpelio duomenų sąrašą. Šio tipo masyve yra vienas raktas ir kiekvieno masyvo elemento vertė.  Šis masyvas gali būti naudojamas komandoje awk, kaip ir kitos programavimo kalbos. Šiame pavyzdyje masyvas pavadintas knyga yra deklaruojamas su trimis elementais, o „loop“ naudojamas kiekvienam elementui skaityti ir spausdinti. Paleiskite šią komandą iš terminalo.

$ aidas | awk 'BEGIN book ["HTML"] = "HTML kišenių vadovas 2010";
knyga ["JS"] = "Veiksminga" JavaScript ";
knyga ["CSS"] = "Mokytis interneto dizaino";
PABAIGA (i knygoje) spausdinti "The book of", i, "is", book [i]; '

Išvestis:

2 pavyzdys: dviejų matmenų masyvo apibrėžimas ir skaitymas awk

Dvimatis masyvas naudojamas saugoti lentelių duomenų sąrašą, kuriame yra fiksuotas eilučių ir stulpelių skaičius. Dviejų matmenų masyvas, pavadintas studentais, yra deklaruojamas šiame pavyzdyje, kuriame yra trys elementai. Čia studento ID ir vardas naudojami kaip pagrindinės masyvo vertės. Kaip ir ankstesnis pavyzdys, „for-in“ kilpa naudojama „awk“ scenarijuje masyvo reikšmėms spausdinti. Paleiskite šį scenarijų iš terminalo.

$ aidas | awk 'BEGIN
studentų ["87462, Mohammedas Ali"] = 87;
studentų ["98376, Sakibas Al Hasanas"] = 99;
studentų ["79937, Musfikur Rahman"] = 88;
spausdinti "(ID, vardas) => Ženklai";

PABAIGA for (i studentams) spausdinti "(", i, ") =>", studentai [i];

Išvestis:

3 pavyzdys: masyvo elemento ištrynimas

Bet kurią masyvo vertę galima ištrinti pagal rakto vertę. Čia, knyga masyvas su trimis elementais yra apibrėžtas scenarijaus pradžioje. Toliau - rakto vertė HTML yra ištrintas naudojant Ištrinti komandą. Elemento vertė HTML raktas spausdinamas prieš ir po Ištrinti komandą. Norėdami patikrinti išvestį, vykdykite šią komandą.

$ aidas | awk 'BEGIN book ["HTML"] = "HTML kišenių vadovas 2010";
knyga ["JS"] = "Veiksminga" JavaScript ";
knyga ["CSS"] = "Mokytis interneto dizaino";
spausdinti „Prieš ištrinant -“, knyga [„HTML“];
ištrinti knygą ["HTML"];
spausdinti "\ nPo ištrynimo -", knygą ["HTML"]; '

Išvestis:

Išvestis rodo, kad vertė HTML indeksas tuščias po vykdymo Ištrinti komandą.

4 pavyzdys: „bash“ masyvo skaitymas awk

Ankstesniuose pavyzdžiuose masyvas yra deklaruojamas komandoje awk ir kartojamas pagal for-in ciklą.  Bet bet kokį „bash“ masyvą galite perskaityti pagal „awk“ scenarijų. Šiame pavyzdyje - „bash“ masyvas, pavadintas lang yra deklaruojamas pirmoje komandoje. Antroje komandoje „bash“ masyvo reikšmės perkeliamos į komandą „awk“, kurioje visi elementai saugomi į „awk“ masyvą, pavadintą awkArray. Masyvo awkArray reikšmės išspausdinamos naudojant ciklą. Paleiskite šią komandą iš terminalo, kad patikrintumėte išvestį.

$ lang = ("PHP" "ASP" "JSP" "C #" "C ++")
$ printf '% s \ n' "$ lang [@]" | awk 'awkArray [NR] = $ 1 END už
(i in awkArray) spausdinti awkArray [i], "\ n";

5 pavyzdys: failo turinio skaitymas į awk masyvą

Bet kurio failo turinį galima perskaityti naudojant awk masyvą. Sukurkite tekstinį failą pavadinimu paukštis.txt su toliau pateiktu turiniu.

paukštis.txt

Kokteilis
Putpelės
Pilka papūga
Baazigaras

Šis „awk“ scenarijus naudojamas skaityti paukštis.txt failą ir išsaugokite reikšmes masyve, awkArray. for loop naudojama analizuoti masyvą ir spausdinti reikšmes terminale. Paleiskite šį scenarijų iš terminalo.

$ awk 'awkArray [skaitiklis ++] = $ 1; END už (n = 0; nspausdinti awkArray [n], "\ n"; ' paukštis.txt

Išvestis:

Scenarijuje atspausdinamas paukštis.txt.

6 pavyzdys: Pasikartojančių įrašų pašalinimas iš failo

„awk“ scenarijus gali būti naudojamas pasikartojantiems duomenims pašalinti iš bet kokio teksto failo. Sukurkite tekstinį failą pavadinimu vaisius.txt turinį. Faile yra du duomenų dublikatai. Šitie yra „Apple“ ir Oranžinė.

vaisius.txt

„Apple“
Oranžinė
Vynuogė
„Apple“
Bananas
Oranžinė
Gvajava

Šis „awk“ scenarijus nuskaitys visas teksto failo eilutes, vaisius.txt ir patikrinkite, ar masyve esama eilutė, ar ne, arr. Jei eilutė yra masyve, ji nesaugos eilutės masyve ir nespausdins reikšmės terminale. Taigi scenarijus išsaugos tik unikalias failo eilutes į masyvą ir spausdins. Vykdykite komandas iš terminalo.

$ kačių vaisiai.txt
$ awk '!($ 0 in arr) spausdinti arr [$ 0], $ 0; vaisiai.txt

Išvestis:

Pirmasis atspausdins bylos turinį, vaisius.txt ir antroji komanda atspausdins vaisių turinį.txt, praleidus pasikartojančias eilutes iš failo.

Išvada:

Ši pamoka parodo įvairius masyvo „awk“ scenarijaus naudojimo būdus, naudodama skirtingus pavyzdžius su paaiškinimu. „Bash“ masyvą ir bet kokį teksto failo turinį taip pat galima pasiekti naudojant „awk“ masyvą. Jei esate naujas programavimo „awk“ programoje, ši pamoka padės jums išmokti „awk“ masyvo naudojimo iš pagrindinio ir galėsite tinkamai naudoti „masyvą“ „awk“ scenarijuje.

„OpenTTD“ ir „Simutrans“
Sukurti savo transporto modeliavimą gali būti smagu, atpalaiduojanti ir be galo viliojanti. Štai kodėl jūs turite įsitikinti, kad išbandėte kuo daugia...
„OpenTTD“ pamoka
„OpenTTD“ yra vienas iš populiariausių verslo modeliavimo žaidimų. Šiame žaidime turite sukurti nuostabų transporto verslą. Tačiau pradėsite nuo mažda...
„SuperTuxKart“, skirta „Linux“
„SuperTuxKart“ yra puikus pavadinimas, sukurtas nemokamai suteikti „Mario Kart“ patirtį jūsų „Linux“ sistemoje. Tai gana sudėtinga ir smagu žaisti, yr...