Syntax:
arrayName [Key] = VärdeEtt namn måste deklarera för arrayvariabeln. arrayName är namnet på matrisen här. Varje matris måste använda den tredje parentesen för att definiera nyckel- eller index och det kommer att vara vilket strängvärde som helst för den associerande matrisen. Värde kan vara valfritt tecken, nummer eller sträng som lagras i det specifika indexet i matrisen.
Exempel 1: Definiera och läsa endimensionell array i awk
En endimensionell matris kan lagra en enda kolumndatalista. Denna typ av array innehåller en enda nyckel och ett värde för varje array-element. Denna matris kan användas i awk-kommando som andra programmeringsspråk. I det här exemplet heter en matris bok deklareras med tre element och för loop används för att läsa och skriva ut varje element. Kör följande kommando från terminalen.
$ eko | awk 'BEGIN book ["HTML"] = "HTML Pocket Guide 2010";book ["JS"] = "Effektiv JavaScript";
book ["CSS"] = "Learning Web Design";
SLUT för (jag i bok) skriva ut "Boken av", jag, "är", bok [jag]; '
Produktion:
Exempel 2: Definiera och läsa tvådimensionell array i awk
En tvådimensionell matris används för att lagra tabelldatalista som innehåller ett fast antal rader och kolumner. Den tvådimensionella matrisen med namnet studenter förklaras i detta exempel som innehåller tre element. Här används student-id och namn som nyckelvärden i matrisen. Liksom föregående exempel används for-in-loop i awk-skriptet för att skriva ut värdena för arrayen. Kör följande skript från terminalen.
$ eko | awk 'BEGINstudenter ["87462, Mohammed Ali"] = 87;
studenter ["98376, Sakib Al Hasan"] = 99;
studenter ["79937, Musfikur Rahman"] = 88;
skriva ut "(ID, namn) => Märken";
SLUT för (i i studenter) skriva ut "(", i, ") =>", studenter [i]; '
Produktion:
Exempel 3: Radera arrayelement
Valfritt värde i matrisen kan raderas baserat på nyckelvärdet. Här, bok array med tre element definieras i början av skriptet. Därefter värdet på nyckeln HTML raderas med hjälp av radera kommando. Elementvärdet av HTML nyckeln skrivs ut före och efter radera kommando. Kör följande kommando för att kontrollera utdata.
$ eko | awk 'BEGIN book ["HTML"] = "HTML Pocket Guide 2010";book ["JS"] = "Effektiv JavaScript";
book ["CSS"] = "Lärande webbdesign";
skriva ut "Before Delete -", boka ["HTML"];
radera bok ["HTML"];
skriv ut "\ nEfter Delete -", bok ["HTML"]; '
Produktion:
Utgången visar att värdet på HTML index är tomt efter körning radera kommando.
Exempel 4: Läser bash-array i awk
I de föregående exemplen deklareras matrisen i awk-kommandot och upprepas av for-in-loop. Men du kan läsa vilken bash-array som helst med awk-skript. I det här exemplet heter en bash-array lang förklaras i det första kommandot. I det andra kommandot skickas bash-matrisvärdena till awk-kommandot som lagrar alla element i en awk-array med namnet awkArray. Värdena för awkArray-matrisen skrivs ut med hjälp av for loop. Kör följande kommando från terminalen för att kontrollera utdata.
$ lang = ("PHP" "ASP" "JSP" "C #" "C ++")$ printf '% s \ n' "$ lang [@]" | awk 'awkArray [NR] = $ 1 SLUT för
(i i awkArray) skriv ut awkArray [i], "\ n"; '
Exempel 5: Läser filinnehållet i en awk-array
Innehållet i vilken fil som helst kan läsas med hjälp av awk array. Skapa en textfil med namnet fågel.Text med innehållet nedan.
fågel.Text
CocktailVaktel
Grå papegoja
Baazigar
Följande awk-skript används för att läsa innehållet i fågel.Text fil och lagra värdena i matrisen, awkArray. för loop används för att analysera matrisen och skriva ut värdena i terminalen. Kör följande skript från terminalen.
$ awk 'awkArray [counter ++] = $ 1; SLUT för (n = 0; nProduktion:
Manuset skriver ut innehållet i fågel.Text.
Exempel 6: Ta bort dubbla poster från en fil
awk-skript kan användas för att ta bort dubbletter från valfri textfil. Skapa en textfil med namnet frukter.Text med följande innehåll. Det finns två dubbla data i filen. Dessa är Äpple och Orange.
frukter.Text
ÄppleOrange
Druva
Äpple
Banan
Orange
Guava
Följande awk-skript läser varje rad från textfilen, frukter.Text och kontrollera att den aktuella raden finns eller inte finns i matrisen, arr. Om raden finns i matrisen kommer den inte att lagra raden i matrisen och kommer inte att skriva ut värdet i terminalen. Så, skriptet lagrar bara de unika raderna från filen i arrayen och skrivs ut. Kör kommandona från terminalen.
$ kattfrukter.Text$ awk '!($ 0 i arr) print arr [$ 0], $ 0; 'frukter.Text
Produktion:
Den första skriver ut innehållet i filen, frukter.txt och det andra kommandot skriver ut innehållet av frukt.txt efter att dubbla rader har utelämnats från filen.
Slutsats:
Denna handledning visar de olika användningarna av arrayen i awk-skript genom att använda olika exempel med förklaring. Bash array och allt textfilinnehåll kan också nås med hjälp av awk array. Om du är ny inom awk-programmering kommer den här handledningen att hjälpa dig att lära dig användningen av awk-array från det grundläggande och du kommer att kunna använda array i awk-skript korrekt.