Hvordan du bruker matrise i awk -kommando

Hvordan du bruker matrise i awk -kommando
En matrisevariabel brukes til å lagre mer enn én data. Det støttes av de fleste av programmeringsspråkene for å lagre flere data. En matrise har to deler. Disse er nøkkel og verdi. Nøkkelen brukes til å få tilgang til plasseringen av verdien. En matrise kan være numerisk og assosiativ. Den numeriske arrayen støtter bare numerisk verdi som nøkkel og assosiativ matrise støtter både numerisk og indeksverdi som nøkkel. Et assosiativt utvalg støttes av AWK -kommandoen. Hvordan du kan definere, få tilgang til eller endre den assosiative matrisen i AWK -kommandoen vises i denne opplæringen ved å bruke forskjellige eksempler.

Syntaks:

ArrayName [Key] = Verdi

Et navn må erklære for matrisevariabelen. ArrayName er navnet på matrisen her. Hver matrise må bruke den tredje braketten for å definere nøkkel eller indeks Og det vil være hvilken som helst strengverdi for assosiativ matrise. Verdi kan være et hvilket som helst tegn, nummer eller streng som vil lagres i den aktuelle indeksen for matrisen.

Eksempel-1: Definere og lese endimensjonal matrise i AWK

En endimensjonal matrise kan lagre en enkeltkolonne-dataliste. Denne typen matriser inneholder en enkelt nøkkel og verdi for hvert matriseelement. Denne matrisen kan brukes i AWK -kommando som andre programmeringsspråk. I dette eksemplet er en matrise som heter bok er erklært med tre elementer og for loop brukes til å lese og skrive ut hvert element. Kjør følgende kommando fra terminalen.

$ ekko | awk 'begynn bok ["html"] = "html lomme guide 2010";
bok ["JS"] = "Effektiv JavaScript";
Book ["CSS"] = "Learning Web Design";
Slutt for (jeg i bok) trykk "The Book of", I, "Is", Book [i]; '

Produksjon:

Eksempel-2: Definere og lese todimensjonal matrise i AWK

En todimensjonal matrise brukes til å lagre tabelldataliste som inneholder et fast antall rader og kolonner. Den todimensjonale matrisen som heter studenter er erklært i dette eksemplet som inneholder tre elementer. Her brukes student -ID og navn som nøkkelverdier for matrisen. Som det forrige eksemplet, brukes for-i-loop i AWK-skriptet for å skrive ut verdiene til matrisen. Kjør følgende skript fra terminalen.

$ ekko | awk 'begynn
Studenter ["87462, Mohammed Ali"] = 87;
Studenter ["98376, Sakib Al Hasan"] = 99;
Studenter ["79937, Musfikur Rahman"] = 88;
skriv ut "(id, navn) => merker";

Slutt for (jeg i studenter) trykk "(", i, ") =>", studenter [i]; '

Produksjon:

Eksempel-3: Sletting av arrayelement

Enhver verdi av matrisen kan slettes basert på nøkkelverdien. Her, bok Array med tre elementer er definert i begynnelsen av skriptet. Deretter verdien av nøkkelen Html blir slettet ved å bruke slett kommando. Elementverdien av Html Nøkkelen skrives ut før og etter slett kommando. Kjør følgende kommando for å sjekke utdataene.

$ ekko | awk 'begynn bok ["html"] = "html lomme guide 2010";
bok ["JS"] = "Effektiv JavaScript";
bok ["CSS"] = "Learning Web Design";
skriv ut "før slett -", bok ["html"];
slett bok ["html"];
Skriv ut "\ Nafter Delete -", Book ["Html"]; '

Produksjon:

Utgangen viser at verdien av Html Indeksen er tom etter utførelse slett kommando.

Eksempel-4: Reading Bash Array i AWK

I de forrige eksemplene er matrisen erklært i AWK-kommandoen og iterert av for-in loop. Men du kan lese et hvilket som helst Bash -matrise av AWK -manus. I dette eksemplet som er kalt en basray lang er erklært i den første kommandoen. I den andre kommandoen blir Bash -arrayverdiene sendt inn i AWK -kommandoen som lagrer alle elementene i en AWK -matrise som er navngitt Awkarray. Verdiene til Awkarray -matrise skrives ut ved å bruke for loop. Kjør følgende kommando fra terminalen for å sjekke utgangen.

$ lang = ("php" "ASP" "JSP" "C#" "C ++")
$ printf '%s \ n' "$ lang [@]" | awk 'awkarray [nr] = $ 1 slutt for
(Jeg i Awkarray) Skriv ut Awkarray [i], "\ n"; '

Eksempel-5: Les filinnholdet i en AWK-matrise

Innholdet i en hvilken som helst fil kan leses ved å bruke AWK -matrise. Lag en tekstfil som heter fugl.tekst med innholdet gitt nedenfor.

fugl.tekst

Cocktail
Vaktel
Grå papegøye
Baazigar

Følgende AWK -skript brukes til å lese innholdet i fugl.tekst fil og lagre verdiene i matrisen, Awkarray. For loop brukes til å analysere matrisen og skrive ut verdiene i terminalen. Kjør følgende skript fra terminalen.

$ awk 'awkarray [counter ++] = $ 1; Slutt for (n = 0; nskriv ut Awkarray [n], "\ n"; 'fugl.tekst

Produksjon:

Skriptet skriver ut innholdet i fugl.tekst.

Eksempel-6: Fjern dupliserte oppføringer fra en fil

AWK -skript kan brukes til å fjerne duplikatdata fra hvilken som helst tekstfil. Lag en tekstfil som heter frukt.tekst Med følgende innhold. Det er to duplikatdata i filen. Disse er eple og oransje.

frukt.tekst

eple
oransje
Drue
eple
Banan
oransje
Guava

Følgende AWK -skript vil lese hver linje fra tekstfilen, frukt.tekst og sjekk gjeldende linje eksisterer eller ikke i matrisen, ARR. Hvis linjen eksisterer i matrisen, vil den ikke lagre linjen i matrisen og vil ikke skrive ut verdien i terminalen. Så skriptet vil bare lagre de unike linjene fra filen i matrisen og skrive ut. Kjør kommandoene fra terminalen.

$ katt frukt.tekst
$ awk '!($ 0 i arr) print arr [$ 0], $ 0; 'Frukt.tekst

Produksjon:

Den første vil skrive ut innholdet i filen, frukt.TXT og den andre kommandoen vil skrive ut innholdet i frukt.txt etter å ha utelatt dupliserte linjer fra filen.

Konklusjon:

Denne opplæringen viser de forskjellige bruksområdene til matrisen i AWK -skriptet ved å bruke forskjellige eksempler med forklaring. Bash -matrise og ethvert tekstfilinnhold kan også nås ved å bruke AWK -matrise. Hvis du er ny i AWK -programmering, vil denne opplæringen hjelpe deg med å lære bruken av AWK -matrise fra Basic, og du vil kunne bruke matrisen i AWK -skriptet riktig.