Awk je nejoblíbenější utilita, která je vyvinuta pro účely extrakce dat, zpracování textu a navíc jako vytváření formátovaných sestav. Je mnohem podobnější sed, ale výkonnější než sed, protože sed má omezení ve zpracování textu. AWK nemá pro své jméno konkrétní význam, protože je pojmenováno pomocí prvního písmene svých vývojářů Alfreda Aho, Petera J. Weinbergera a Briana Kernighana.
V tomto článku se naučíme 10 úžasných příkazů awk, které musíte znát. Jako příklad jsem vytvořil a přidal následující sadu dat v souboru student.txt. Soubor dat má 4 sloupce, kde první pole obsahuje křestní jméno, druhé pole obsahuje druhé jméno, třetí pole obsahuje věk a poslední obsahuje třídu.
Tisk konkrétního pole pomocí proměnné
Awk má mnoho předpřipravených proměnných, které mají svůj příslušný účel. Pomocí tohoto příkazu můžeme vytisknout všechna specifická data pole pomocí $x, kde x odkazuje na pozici číslování pole.
$ awk '{print $1, $2}' student.txt
proměnná BEGIN
Proměnná BEGIN se používá k přidání záhlaví nebo nadpisu k výsledným datům při provádění skriptu před zpracováním dat. Pomáhá při indexování při formátování datových tabulek. V následujícím příkladu jsem vytiskl nějaký text jako indexování a poté vytiskl všechna jména studentů.
$ awk 'BEGIN {print "Students : "} {print $1}' student.txt
Proměnná END
END je pravým opakem BEGIN, protože provádí skript po zpracování dat. Lze jej použít pro závěrečné vykazování souboru dat. V následujícím příkladu jsem vytiskl celý věk studentů a poté vytiskl některé závěrečné zprávy.
$ awk '{print $3} END { print "These are student age " } ' student.txt
Oddělovač souborů
Mezera a mezera na tabulátoru jsou výchozí oddělovače příkazu awk, nicméně text můžeme oddělit na základě jiných oddělovačů, jako je čárka, lomítko atd. Abychom toho dosáhli, musíme k příkazu přidat příznak -F a oddělovač poskytnout v jednoduchých uvozovkách. .
$ awk -F':' '{print $1}' /etc/passwd
Spuštění skriptu ze souboru
Můžeme také spustit awk skript ze souboru, což nám umožňuje efektivně vytvářet sestavy. K tomu musíte vytvořit soubor, napsat skript a spustit jej pomocí příkazu awk. Pro ukázku můžete vytvořit název souboru demo_script a zkopírovat a vložit následující skript.
$ vi demo_script { sum+=$3 } END { print("Sum of all student age is", sum) }
Příkaz awk poskytuje parametr -f pro spuštění skriptu ze souboru.
$ awk -f demo_script student.txt
Použití více skriptů
Pomocí středníku můžeme spustit více skriptů. V následujícím příkladu jsem vytiskl nějaký text a poté výstup zpracoval pomocí awk a vytiskl upravený výsledek.
$ echo "Hello, Dr. John" | awk '{$3="George"; print $0}'
Počítání počtu řádků
Číslo můžeme sestavě přidělit pomocí proměnné NR, což je awk vestavěná proměnná, která automaticky vytiskne číslo řádku do sestavy.
$ awk '{print NR "\t" $0}' student.txt
Počet Počet polí
Někdy jsme při přípravě dat zapomněli přidat data do konkrétního sloupce, což může vést k nesrovnalostem ve zprávě. Pole můžeme počítat pomocí proměnné NF, což nám usnadňuje kontrolu a uspořádání sestav.
$ awk '{print NR".",$0 "\n Count=" NF}' student.txt
Pokud je podmínka
Podmínku if můžeme použít při přípravě podmíněné zprávy. V následujícím příkladu vytiskneme všechny studenty, jejichž věk je nižší než 16
$ awk ' BEGIN{ print "Student whose age are under 16 are:" } { if($3<16){ print $1 } }' student.txt
Pro smyčku
V následujícím příkladu použijeme cyklus for k vytištění 5 náhodných čísel za sebou. Pro generování náhodných čísel použijeme funkci rand(), což je funkce vestavěná do systému. Tato funkce vygeneruje náhodné číslo v desítkové soustavě, takže musíme vynásobit 100, abychom dostali náhodná čísla 1 až 100.
$ awk 'BEGIN { for (i = 1; i <= 5; i++){ print int(100 * rand()) } }'
Závěr
V tomto článku jsme se dozvěděli o 10 úžasných příkazech a skriptech awk. Doufám, že se vám tento článek bude líbit.