Sintaxă:
arrayName [Key] = ValoareUn nume trebuie să fie declarat pentru variabila matricei. arrayName este numele matricei aici. Fiecare matrice trebuie să utilizeze a treia paranteză pentru a defini cheie sau index și va fi orice valoare șir pentru matricea asociativă. Valoare poate fi orice caracter, număr sau șir care se va stoca în indexul particular al matricei.
Exemplu-1: Definirea și citirea matricei unidimensionale în awk
O matrice unidimensională poate stoca o listă de date cu o singură coloană. Acest tip de matrice conține o singură cheie și o valoare pentru fiecare element de matrice. Această matrice poate fi utilizată în comanda awk ca și alte limbaje de programare. În acest exemplu, o matrice numită carte este declarat cu trei elemente și pentru buclă este folosit pentru a citi și tipări fiecare element. Rulați următoarea comandă de la terminal.
$ echo | awk 'BEGIN book ["HTML"] = "Ghid HTML de buzunar 2010";book ["JS"] = "JavaScript eficient";
book ["CSS"] = "Învățare web design";
END for (i in book) print "The book of", i, "is", book [i]; '
Ieșire:
Exemplul-2: Definirea și citirea matricei bidimensionale în awk
O matrice bidimensională este utilizată pentru a stoca lista de date tabulare care conține un număr fix de rânduri și coloane. Matricea bidimensională numită studenți este declarată în acest exemplu care conține trei elemente. Aici, ID-ul și numele studentului sunt utilizate ca valori cheie ale matricei. La fel ca în exemplul anterior, bucla for-in este utilizată în scriptul awk pentru a imprima valorile matricei. Rulați următorul script de la terminal.
$ echo | awk 'BEGINstudenti ["87462, Mohammed Ali"] = 87;
studenți ["98376, Sakib Al Hasan"] = 99;
studenti ["79937, Musfikur Rahman"] = 88;
print "(ID, Nume) => Marcaje";
END for (i in students) print "(", i, ") =>", studenti [i]; '
Ieșire:
Exemplu-3: Ștergerea elementului matricei
Orice valoare a matricei poate fi ștearsă pe baza valorii cheii. Aici, carte matricea cu trei elemente este definită la începutul scriptului. Apoi, valoarea cheii HTML este șters utilizând șterge comanda. Valoarea elementului HTML tasta este imprimată înainte și după șterge comanda. Rulați următoarea comandă pentru a verifica ieșirea.
$ echo | awk 'BEGIN book ["HTML"] = "Ghid HTML de buzunar 2010";book ["JS"] = "JavaScript eficient";
book ["CSS"] = "Învățare web design";
tipăriți „Înainte de ștergere -”, carte [„HTML”];
ștergeți cartea ["HTML"];
print "\ nDupă ștergere -", carte ["HTML"]; '
Ieșire:
Rezultatul arată că valoarea HTML indexul este gol după executare șterge comanda.
Exemplu-4: Citirea matricei bash în awk
În exemplele anterioare, matricea este declarată în comanda awk și iterată de bucla for-in. Dar puteți citi orice matrice bash prin script awk. În acest exemplu, o matrice bash numită lang este declarat în prima comandă. În cea de-a doua comandă, valorile matricei bash sunt trecute în comanda awk care stochează toate elementele într-o matrice awk numită awkArray. Valorile matricei awkArray sunt tipărite folosind bucla for. Rulați următoarea comandă de la terminal pentru a verifica ieșirea.
$ lang = ("PHP" "ASP" "JSP" "C #" "C ++")$ printf '% s \ n' "$ lang [@]" | awk 'awkArray [NR] = $ 1 END pentru
(i in awkArray) print awkArray [i], "\ n"; '
Exemplul-5: Citirea conținutului fișierului într-o matrice awk
Conținutul oricărui fișier poate fi citit folosind matricea awk. Creați un fișier text numit pasăre.txt cu conținutul dat mai jos.
pasăre.txt
CocktailPrepeliţă
Papagal gri
Baazigar
Următorul script awk este utilizat pentru a citi conținutul pasăre.txt înregistrați și stocați valorile în matrice, awkArray. bucla for este utilizată pentru a analiza matricea și a imprima valorile în terminal. Rulați următorul script de la terminal.
$ awk 'awkArray [counter ++] = $ 1; END pentru (n = 0; nIeșire:
Scriptul tipărește conținutul pasăre.txt.
Exemplu-6: Eliminarea intrărilor duplicat dintr-un fișier
scriptul awk poate fi folosit pentru a elimina datele duplicate din orice fișier text. Creați un fișier text numit fructe.txt cu următorul conținut. Există două date duplicate în fișier. Acestea sunt măr și portocale.
fructe.txt
mărportocale
Struguri
măr
Banană
portocale
Guava
Următorul script awk va citi fiecare rând din fișierul text, fructe.txt și verificați dacă linia curentă există sau nu în matrice, arr. Dacă linia există în matrice, atunci nu va stoca linia în matrice și nu va imprima valoarea în terminal. Deci, scriptul va stoca numai liniile unice din fișier în matrice și se va imprima. Rulați comenzile de la terminal.
$ fructe de pisica.txt$ awk '!($ 0 în ar) print arr [$ 0], $ 0; 'fructe.txt
Ieșire:
Primul va imprima conținutul fișierului, fructe.txt și a doua comandă va imprima conținutul fructelor.txt după omiterea liniilor duplicate din fișier.
Concluzie:
Acest tutorial arată diferitele utilizări ale tabloului în scriptul awk utilizând diferite exemple cu explicații. Matricea Bash și orice conținut al fișierului text poate fi accesat, de asemenea, utilizând matricea awk. Dacă sunteți nou în programarea awk, acest tutorial vă va ajuta să învățați utilizările matricei awk de la bază și veți putea utiliza matricea în scriptul awk în mod corespunzător.