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.