Príkaz AWK v Linuxe s príkladmi


Ak pracujete s Linuxom, možno ste sa stretli s príkazom AWK. AWK je výkonný nástroj na spracovanie textu, ktorý sa používa na rôzne úlohy, ako je filtrovanie, manipulácia a transformácia údajov. V tomto článku podrobne preskúmame príkaz AWK vrátane jeho syntaxe, funkcií a príkladov jeho použitia.

Čo je príkaz AWK v systéme Linux?

AWK je programovací jazyk a nástroj, ktorý sa používa na spracovanie textu a manipuláciu s údajmi. Zvyčajne sa používa na extrakciu a manipuláciu s údajmi z textových súborov, ale dá sa použiť aj na zložitejšie úlohy, ako je generovanie správ, analýza údajov a ďalšie. AWK je k dispozícii na takmer všetkých systémoch založených na Unixe a často sa používa v spojení s inými nástrojmi príkazového riadku, ako sú sed a grep.

Syntax príkazu AWK

Príkaz AWK má jednoduchú syntax, ktorá pozostáva zo série vzorov a akcií. Vzory sa používajú na priradenie konkrétnych riadkov vstupu, zatiaľ čo akcie sa používajú na určenie toho, čo sa má s týmito riadkami urobiť. Tu je príklad základnej syntaxe príkazu AWK −

awk 'pattern { action }' input_file

Vzor je uzavretý v jednoduchých úvodzovkách a určuje, ktoré riadky vstupného súboru sa majú spracovať. akcia je uzavretá v zložených zátvorkách a určuje, čo sa má s týmito riadkami urobiť. Viaceré vzory a akcie je možné kombinovať a vytvárať zložitejšie skripty.

Funkcie príkazu AWK

AWK má množstvo vstavaných funkcií, ktoré možno použiť na manipuláciu a spracovanie údajov. Tu sú niektoré z najčastejšie používaných funkcií −

  • print − Táto funkcia sa používa na tlač textu do konzoly alebo súboru.

  • printf − Táto funkcia sa používa na formátovanie textu a jeho tlač do konzoly alebo do súboru.

  • dĺžka − Táto funkcia sa používa na určenie dĺžky reťazca.

  • substr − Táto funkcia sa používa na extrahovanie podreťazca z reťazca.

  • split − Táto funkcia sa používa na rozdelenie reťazca do poľa na základe zadaného oddeľovača.

  • getline − Táto funkcia sa používa na čítanie ďalšieho riadku vstupu.

Príklady príkazov AWK

Teraz, keď rozumieme základnej syntaxi a funkciám príkazu AWK, pozrime sa na niekoľko príkladov jeho použitia.

Príklad 1: Tlač obsahu súboru

Najjednoduchšie použitie príkazu AWK je vytlačiť obsah súboru do konzoly. Tu je návod, ako to urobiť −

awk '{ print }' input_file

Tento skript porovná každý riadok vo vstupnom súbore a vytlačí ho do konzoly.

Príklad 2: Tlač konkrétnych stĺpcov súboru

Jedným z najbežnejších použití AWK je extrahovanie konkrétnych stĺpcov zo súboru. Tu je návod, ako extrahovať prvý a tretí stĺpec súboru −

awk '{ print $1, $3 }' input_file

Tento skript porovná každý riadok vo vstupnom súbore a vytlačí prvý a tretí stĺpec do konzoly.

Príklad 3: Filtrovanie riadkov na základe podmienky

AWK možno použiť aj na filtrovanie riadkov na základe podmienky. Tu je návod, ako vytlačiť všetky riadky v súbore, ktoré obsahujú slovo „chyba“ −

awk '/error/ { print }' input_file

Tento skript porovná každý riadok vo vstupnom súbore, ktorý obsahuje slovo „chyba“ a vytlačí ho do konzoly.

Príklad 4: Súčet hodnôt v stĺpci

AWK možno použiť aj na vykonávanie matematických operácií s údajmi. Tu je návod, ako sčítať hodnoty v druhom stĺpci súboru −

awk '{ sum += $2 } END { print sum }' input_file

Tento skript spočíta všetky hodnoty v druhom stĺpci vstupného súboru a vytlačí súčet do konzoly.

Príklad 5: Extrahujte podreťazec zo stĺpca

Ďalšou bežnou úlohou je extrahovať podreťazec zo stĺpca v súbore. Tu je návod, ako extrahovať prvé tri znaky z prvého stĺpca súboru −

awk '{ print substr($1, 1, 3) }' input_file

Tento skript extrahuje prvé tri znaky z prvého stĺpca vstupného súboru a vytlačí ich do konzoly.

Príklad 6: Spojenie dvoch súborov na základe spoločného stĺpca

AWK možno použiť aj na spojenie dvoch súborov na základe spoločného stĺpca. Tu je vysvetlené, ako spojiť dva súbory na základe hodnoty prvého stĺpca −

awk 'NR==FNR{a[$1]=$2;next}{ print $0, a[$1] }' file1 file2

Tento skript načíta prvý súbor do pamäte a vytvorí pole s hodnotami v druhom stĺpci. Potom prečíta druhý súbor a vytlačí každý riadok, za ktorým nasleduje zodpovedajúca hodnota z prvého súboru.

Príklad 7: Extrahujte prvý stĺpec súboru

Ak chcete extrahovať prvý stĺpec súboru pomocou príkazu AWK, použite nasledujúcu syntax −

$ awk '{ print $1 }' filename

Tu sa $1 vzťahuje na prvý stĺpec vstupného súboru. príkaz print sa používa na zobrazenie výstupu.

Príklad 8: Vypočítajte priemer stĺpca

Ak chcete vypočítať priemer stĺpca pomocou príkazu AWK, použite nasledujúcu syntax −

$ awk '{ sum += $1 } END { print sum / NR }' filename

Suma je tu premenná, ktorá ukladá súčet hodnôt do prvého stĺpca. NR je vstavaná premenná, ktorá ukladá počet záznamov (riadkov) spracovaných príkazom AWK. Vzor END sa zhoduje s koncom vstupného súboru.

Príklad 9: Nahradenie reťazca v súbore

Ak chcete nahradiť reťazec v súbore pomocou príkazu AWK, použite nasledujúcu syntax −

$ awk '{ gsub("oldstring", "newstring") } 1' filename

Tu je gsub funkcia, ktorá nahrádza všetky výskyty oldstringu newstring. 1 vzor zodpovedá všetkým riadkom vstupného súboru.

Príklad 10: Zobrazenie posledného poľa súboru

Ak chcete zobraziť posledné pole súboru pomocou príkazu AWK, použite nasledujúcu syntax −

$ awk '{ print $NF }' filename

Tu sa $NF vzťahuje na posledné pole vstupného súboru. príkaz print sa používa na zobrazenie výstupu.

Príklad 11: Použitie regulárnych výrazov

Regulárne výrazy sú výkonnou funkciou príkazu AWK, ktorá umožňuje používateľom vyhľadávať vzory v údajoch. Tu je príklad, ktorý demonštruje použitie regulárnych výrazov −

$ awk '/pattern/ { print }' filename

Tu je /vzor/ regulárny výraz, ktorý sa zhoduje s ľubovoľným riadkom, ktorý obsahuje vzor.

Príklad 12: Použitie premenných

Premenné možno použiť v príkaze AWK na uloženie hodnôt, ktoré možno použiť v akciách. Tu je príklad, ktorý demonštruje použitie premenných −

$ awk '{ total += $1 } END { print "Total: ", total }' filename

Tu sa premenná total používa na uloženie súčtu hodnôt v prvom stĺpci.

Príklad 13: Použitie vstavaných premenných

Príkaz AWK má niekoľko vstavaných premenných, ktoré možno použiť na vykonávanie rôznych úloh. Tu je niekoľko príkladov −

  • FS − premenná oddeľovača polí sa používa na určenie oddeľovača používaného na oddelenie polí vo vstupnom súbore. Štandardne je nastavený na biele znaky.

  • RS − premenná separátora záznamov sa používa na určenie oddeľovača používaného na oddelenie záznamov vo vstupnom súbore. Štandardne je nastavený na znak nového riadku.

  • OFS − premenná oddeľovača výstupných polí sa používa na určenie oddeľovača používaného na oddelenie polí vo výstupe. Štandardne je nastavený na biele znaky.

  • ORS − premenná separátora výstupných záznamov sa používa na určenie oddeľovača používaného na oddelenie záznamov vo výstupe. Štandardne je nastavený na znak nového riadku.

Príklad 14: Použitie kontrolných príkazov

Riadiace príkazy ako if-else a while cykly možno použiť v príkaze AWK na vykonávanie podmienených operácií. Tu je príklad, ktorý demonštruje použitie príkazov if-else −

$ awk '{ if ($1 > 50) { print "Pass" } else { print "Fail" } }' filename

Ak je hodnota v prvom stĺpci väčšia ako 50, výstup bude „Vyhovuje“, inak bude „Nevyhovuje“.

Príklad 15: Používanie funkcií

Funkcie možno definovať a použiť v príkaze AWK na vykonávanie zložitých operácií. Tu je príklad, ktorý demonštruje použitie funkcií −

$ awk 'function square(x) { return x*x } { print square($1) }' filename

Tu je definovaný štvorec funkcie a používa sa na výpočet druhej mocniny hodnoty v prvom stĺpci.

Záver

Príkaz AWK je výkonný nástroj na spracovanie textu a manipuláciu s údajmi v systéme Linux. Vďaka svojej jednoduchej syntaxi, vstavaným funkciám a schopnosti vykonávať zložité úlohy je AWK nevyhnutným nástrojom pre každého používateľa Linuxu. Pomocou príkladov v tomto článku by ste mali byť schopní začať s AWK a začať naplno využívať jeho potenciál.