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.