Awk

Sådan bruges array i awk-kommando

Sådan bruges array i awk-kommando
En arrayvariabel bruges til at gemme mere end én data. Det understøttes af de fleste programmeringssprog til at gemme flere data. En matrix har to dele. Disse er nøgle og værdi. Nøglen bruges til at få adgang til placeringen af ​​værdien. En matrix kan være numerisk og associerende. Det numeriske array understøtter kun numerisk værdi som nøgle, og associativt array understøtter både numerisk og indeksværdi som nøgle. Et associerende array understøttes af awk-kommando. Hvordan du kan definere, få adgang til eller ændre det associerende array i kommandoen awk vises i denne vejledning ved hjælp af forskellige eksempler.

Syntaks:

arrayName [Key] = Værdi

Et navn skal erklæres for arrayvariablen. arrayName er navnet på arrayet her. Hver matrix skal bruge den tredje parentes til at definere nøgle eller indeks og det vil være en hvilken som helst strengværdi for det associerende array. Værdi kan være et hvilket som helst tegn, tal eller streng, der gemmes i det særlige indeks i matrixen.

Eksempel 1: Definition og læsning af et-dimensionelt array i awk

Et endimensionelt array kan gemme en enkelt kolonnedataliste. Denne type array indeholder en enkelt nøgle og værdi for hvert array-element.  Denne matrix kan bruges i awk-kommando som andre programmeringssprog. I dette eksempel er en matrix navngivet Bestil erklæres med tre elementer, og for loop bruges til at læse og udskrive hvert element. Kør følgende kommando fra terminalen.

$ ekko | awk 'BEGIN book ["HTML"] = "HTML Pocket Guide 2010";
bog ["JS"] = "Effektiv JavaScript";
book ["CSS"] = "Learning Web Design";
SLUT for (i i bog) udskriv "Bogen af", i, "er", bog [i]; '

Produktion:

Eksempel 2: Definition og læsning af todimensionelt array i awk

Et todimensionalt array bruges til at gemme tabelledataliste, der indeholder et fast antal rækker og kolonner. Den to-dimensionelle matrix navngivet studerende er erklæret i dette eksempel, der indeholder tre elementer. Her bruges elev-id og -navn som nøgleværdier i arrayet. Som det foregående eksempel bruges for-in-loop i awk-scriptet til at udskrive værdierne i arrayet. Kør følgende script fra terminalen.

$ ekko | awk 'BEGIN
studerende ["87462, Mohammed Ali"] = 87;
studerende ["98376, Sakib Al Hasan"] = 99;
studerende ["79937, Musfikur Rahman"] = 88;
print "(ID, Name) => Marks";

END for (i hos studerende) print "(", i, ") =>", studerende [i]; '

Produktion:

Eksempel 3: Sletning af array-element

Enhver værdi af arrayet kan slettes baseret på nøgleværdien. Her, Bestil array med tre elementer er defineret i begyndelsen af ​​scriptet. Dernæst værdien på nøglen HTML slettes ved hjælp af slet kommando. Elementværdien af HTML nøglen udskrives før og efter slet kommando. Kør følgende kommando for at kontrollere output.

$ ekko | awk 'BEGIN book ["HTML"] = "HTML Pocket Guide 2010";
bog ["JS"] = "Effektiv JavaScript";
book ["CSS"] = "Learning Web Design";
udskriv "Før sletning -", bog ["HTML"];
slet bog ["HTML"];
udskriv "\ nEfter Slet -", bog ["HTML"]; '

Produktion:

Outputtet viser, at værdien af HTML indeks er tomt efter udførelse slet kommando.

Eksempel 4: Læsning af bash-array i awk

I de foregående eksempler erklæres matrixen i kommandoen awk og gentages af for-in-loop.  Men du kan læse ethvert bash-array ved hjælp af awk-script. I dette eksempel hedder et bash-array lang erklæres i den første kommando. I den anden kommando sendes bash-array-værdierne til kommandoen awk, der gemmer alle elementerne i et navngivet array awkArray. Værdierne for awkArray array udskrives ved hjælp af for loop. Kør følgende kommando fra terminalen for at kontrollere output.

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

Eksempel 5: Læsning af filindholdet i et awk-array

Indholdet af enhver fil kan læses ved hjælp af awk array. Opret en tekstfil med navnet fugl.txt med indholdet nedenfor.

fugl.txt

Cocktail
Vagtler
Grå papegøje
Baazigar

Følgende awk-script bruges til at læse indholdet af fugl.txt fil og gem værdierne i arrayet, awkArray. for loop bruges til at analysere arrayet og udskrive værdierne i terminalen. Kør følgende script fra terminalen.

$ awk 'awkArray [counter ++] = $ 1; SLUT for (n = 0; nudskriv awkArray [n], "\ n"; 'fugl.txt

Produktion:

Scriptet udskriver indholdet af fugl.txt.

Eksempel 6: Fjernelse af duplikatposter fra en fil

awk script kan bruges til at fjerne duplikatdata fra enhver tekstfil. Opret en tekstfil med navnet frugt.txt med følgende indhold. Der er to duplikatdata i filen. Disse er Æble og orange.

frugt.txt

Æble
orange
Drue
Æble
Banan
orange
Guava

Det følgende awk-script læser hver linje fra tekstfilen, frugt.txt og kontroller, at den aktuelle linje findes eller ikke er i arrayet, arr. Hvis linjen findes i arrayet, gemmer den ikke linjen i arrayet og udskriver ikke værdien i terminalen. Så scriptet gemmer kun de unikke linjer fra filen i arrayet og udskrives. Kør kommandoerne fra terminalen.

$ kattefrugter.txt
$ awk '!($ 0 i arr) print arr [$ 0], $ 0; 'frugter.txt

Produktion:

Den første udskriver indholdet af filen med frugter.txt og den anden kommando udskriver indholdet af frugter.txt efter at udelade duplikatlinjer fra filen.

Konklusion:

Denne tutorial viser de forskellige anvendelser af arrayet i awk-script ved hjælp af forskellige eksempler med forklaring. Bash-array og ethvert tekstfilindhold kan også fås ved hjælp af awk-array. Hvis du er ny inden for awk programmering, vil denne tutorial hjælpe dig med at lære brugen af ​​awk array fra det grundlæggende, og du vil være i stand til at bruge array i awk script korrekt.

Bedste apps til Gamepad Mapping til Linux
Hvis du kan lide at spille spil på Linux med en gamepad i stedet for et typisk tastatur- og musesystem, er der nogle nyttige apps til dig. Mange pc-sp...
Nyttige værktøjer til Linux-spillere
Hvis du kan lide at spille spil på Linux, er chancerne for, at du måske har brugt apps og hjælpeprogrammer som Wine, Lutris og OBS Studio for at forbe...
HD Remastered-spil til Linux, der aldrig tidligere havde haft en Linux-udgivelse
Mange spiludviklere og udgivere kommer med HD-remaster af gamle spil for at forlænge franchisens levetid. Venligst fans, der anmoder om kompatibilitet...