Awk

Hur man använder array i awk-kommando

Hur man använder array i awk-kommando
En arrayvariabel används för att lagra mer än en data. Det stöds av de flesta programmeringsspråk för att lagra flera data. En matris har två delar. Dessa är nyckel och värde. Nyckeln används för att komma åt platsen för värdet. En matris kan vara numerisk och associerande. Den numeriska matrisen stöder endast numeriskt värde som nyckel och associerande matris stöder både numeriskt och indexvärde som nyckel. En associerande matris stöds av kommandot awk. Hur du kan definiera, komma åt eller ändra den associerande matrisen i awk-kommandot visas i denna handledning med hjälp av olika exempel.

Syntax:

arrayName [Key] = Värde

Ett 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 'BEGIN
studenter ["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

Cocktail
Vaktel
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; nskriva ut awkArray [n], "\ n"; 'fågel.Text

Produktion:

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

Äpple
Orange
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.

Gratis och öppen källkodsmotorer för utveckling av Linux-spel
Den här artikeln kommer att täcka en lista över gratis motorer med öppen källkod som kan användas för att utveckla 2D- och 3D-spel på Linux. Det finns...
Shadow of the Tomb Raider for Linux Tutorial
Shadow of the Tomb Raider är det tolfte tillskottet till Tomb Raider-serien - en action-äventyrsspelfranchise skapad av Eidos Montreal. Spelet mottogs...
Hur man förbättrar FPS i Linux?
FPS står för Bildrutor per sekund. FPS: s uppgift är att mäta bildfrekvensen i videouppspelningar eller spelprestanda. Med enkla ord betecknas antalet...