Sprievodca programovacím jazykom AWK v systéme Linux


Úvod

AWK je skriptovací jazyk používaný na spracovanie textu v systéme Linux. Je navrhnutý na manipuláciu s údajmi v textových súboroch, vďaka čomu je ideálnym nástrojom na analýzu údajov a úlohy správy. S radom vstavaných funkcií a operátorov môže AWK vykonávať jednoduché úlohy vyhľadávania a nahrádzania alebo komplexné transformácie údajov. Jeho stručná syntax a všestrannosť umožňujú jednoduchú manipuláciu s textovými súbormi. AWK je výkonný nástroj pre tých, ktorí pracujú s textovými súbormi v prostredí Linuxu.

Dovoľte nám poskytnúť sprievodcu pre začiatočníkov programovacím jazykom AWK v systéme Linux. Pokryjeme základnú syntax jazyka, rôzne typy operácií, ktoré je možné vykonávať pomocou AWK, a ako používať AWK na spracovanie textových súborov. Poskytneme tiež príklady kódu a výstup pre každú z pokrytých operácií.

Inštalácia AWK v operačnom systéme Linux

Jedným zo spôsobov, ako ho nainštalovať, je použitie správcu balíkov, ktorý poskytuje naša distribúcia Linuxu. Tu je príkaz na inštaláciu −

$ sudo apt-get install gawk

Po inštalácii môžeme skontrolovať verziu AWK v Linuxe −

$ awk --version

Ak je nainštalovaný AWK, príkaz zobrazí číslo verzie.

Premenné v programovacom jazyku AWK

AWK poskytuje množstvo vstavaných premenných, ktoré možno použiť vo vzoroch a akciách. Najpoužívanejšie premenné sú −

  • NR − predstavuje číslo aktuálneho záznamu (riadku).

  • NF − predstavuje celkový počet polí vo vstupnom zázname.

  • 0 $ − Celý aktuálny záznam.

  • $1, $2, $3, … − Prvé, druhé, tretie, … pole v aktuálnom zázname.

Okrem týchto vstavaných premenných umožňuje AWK aj používateľom definované premenné. Používateľom definovaným premenným je možné priradiť hodnoty pomocou operátora =.

Možnosti príkazového riadka AWK

AWK sa zvyčajne vyvoláva z príkazového riadku pomocou príkazu awk, ktorý akceptuje rôzne možnosti a argumenty. Tu je zoznam bežne používaných možností −

  • -F − určuje oddeľovač polí pre vstupné súbory.

  • -v − Nastavuje hodnotu premennej.

  • -f − určuje súbor skriptu AWK, ktorý sa má spustiť.

  • -n − zakáže automatickú tlač riadkov.

  • -W – povolí upozornenia.

Extrahovanie polí zo súboru pomocou AWK

Predpokladajme, že máme názov súboru CSV „názov súboru.csv“ s nasledujúcim formátom −

name, age, gender
Papan, 22, Male
Priya, 27, Female

Na extrakciu polí veku a pohlavia môžeme použiť nasledujúci príkaz −

$ awk -F, '{ print $2, $3 }' filename.csv

Tento kód AWK vytlačí druhé a tretie pole (stĺpce) súboru CSV s názvom „názov súboru.csv“, pričom oddeľovačom je čiarka („,“).

Tu je vysvetlenie -

  • ‘awk‘ − Príkaz používaný na spustenie skriptu AWK

  • ‘-F,‘ − Táto možnosť nastaví oddeľovač polí na čiarku. To povie AWK, aby zaobchádzalo so súborom CSV ako s čiarkami ako oddeľovačmi medzi poľami.

  • “ ' { print $2, $3 }' ” − Toto je samotný skript AWK. Hovorí AWK, aby vytlačil druhé a tretie pole každého riadku v súbore oddelené medzerou.

age gender
22 Male
27 Female

Tento príkaz nastaví oddeľovač polí na čiarku (-F,) a vytlačí druhé a tretie pole ($2, $3) pre každý riadok v súbore.

Filtrovanie údajov pomocou príkazu AWK

Máme súbor s názvom „data.txt“, ktorý obsahuje informácie o študentoch, ako sú ich meno, vek a ročník. Chceme odfiltrovať len žiakov, ktorí majú známku „A“.

Príklad

Vložte nižšie uvedený obsah do súboru „data.txt“ −

John, 18, A
Sara, 19, B
Mike, 20, A
Lisa, 18, C
Tom, 19, A

Na odfiltrovanie študentov, ktorí majú známku „A“, môžeme použiť nasledujúci príkaz AWK −

$ awk '$3=="A" {print}' data.txt

Výkon

John, 18, A
Mike, 20, A
Tom, 19, A

Ako vidíme, boli vytlačené iba riadky, ktoré majú stupeň „A“.

Príklad

Na vykonanie zložitejšieho filtrovania môžeme použiť aj príkaz if v príkaze AWK. Napríklad, ak chceme odfiltrovať iba študentov, ktorí sú starší ako 18 rokov a majú známku „A“, môžeme použiť nasledujúci príkaz AWK −

$ awk '$2>18 && $3=="A" {print}' data.txt

Výkon

Mike, 20, A
Tom, 19, A

Ako vidíme, vytlačili sa iba riadky, ktoré spĺňajú obe podmienky.

Implementácia pre slučky pomocou príkazu AWK

K dispozícii sú 3 slučky −

  • zatiaľ čo slučka

  • do-while Loop

  • pre Loop

Tu implementujeme iba „cyklus for“.

Najprv vytvorte súbor „input.txt“ a vložte doň obsah −

Soumen,25
Bob,30
Papan,22
Aditya,40
Joy,35

Teraz sa pozrime, ako môžeme použiť slučky v AWK na spracovanie údajov v tomto súbore.

Vytvorte iný názov súboru „program.awk“

Nasledujúci program AWK používa cyklus for na vytlačenie každého riadku súboru −

{
   for (i = 1; i <= NF; i++) {
      printf("%s ", $i);
   }
   printf("
");
}

V tomto programe je vzor prázdny, čo znamená, že akcia sa použije na každý riadok súboru. Akcia pozostáva z cyklu for, ktorý iteruje cez každé pole (stĺpec) riadku pomocou premennej NF (počet polí). Vo vnútri slučky sa funkcia printf používa na vytlačenie každého poľa, za ktorým nasleduje medzera. Po slučke sa funkcia printf opäť použije na vytlačenie znaku nového riadku.

Na spustenie tohto programu môžeme použiť nasledujúci príkaz −

$ awk -F, -f program.awk input.txt

Kde "program.awk" je názov súboru programu AWK a "-F," určuje, že oddeľovač polí je čiarka.

Soumen,25
Bob,30
Papan,22
Aditya,40
Joy,35

Vidíme, že vytlačí všetky riadky zo súboru ‚input.txt‘.

Záver

Tento článok predstavuje programovací jazyk AWK v systéme Linux a ponúka praktické príklady kódu a ich zodpovedajúci výstup. AWK je vysoko efektívny nástroj na spracovanie textových údajov a extrahovanie relevantných informácií z nich. Príručka pokrýva základné programové koncepty AWK vrátane slučiek. S týmito znalosťami budeme vybavení na vytváranie vlastných programov AWK na Linuxe.