Awk: Learning Shell Scripting using a awk Terminal Command
Príkaz „awk“ vo voľných operačných systémoch typu GNU / Linux je veľmi výkonný príkaz, ktorý nám pomáha mať väčšiu kontrolu nad spracovaním údajov z iných príkazov alebo príkazov. Názov AWK je odvodený od iniciál priezvisk jeho autorov: Alfred Aho, peter Weinberger a Brian KErnighan.
Tento príkaz poskytuje skriptovací jazyk na spracovanie textu, pomocou ktorého môžeme: Definovať premenné, používať reťazce a aritmetické operátory, používať riadenie toku a cykly a generovať formátované správy. Awk v skutočnosti nie je iba príkazom na spracovanie vzorov, je to celý jazyk sémantickej analýzy.
Úvod do príkazu „awk“
AWK bol jedným z prvých veľmi populárnych obslužných nástrojov pre konzoly na správu (manipuláciu / extrakciu) dát maximalizáciou funkčnosti potrubí UNIX. Jazyk, ktorý poskytuje tento obslužný program, je v súčasnosti štandardom takmer vo všetkých moderných operačných systémoch typu UNIX, a to natoľko, že je súčasťou základných špecifikácií systému UNIX, takže vo väčšine z nich je už štandardne nainštalovaný.
Jeho najbežnejšia syntax je: awk „programové“ súbory a kde „program“ môže byť: pattern {action} pattern {action}. Príkaz načíta vstup do súboru po jednom riadku. Každý riadok sa porovnáva s každým vzorom v poradí; Pre každý vzor, ktorý sa zhoduje s riadkom, sa vykoná zodpovedajúca akcia.
Jednoduchý príklad ako:
awk -F: '$1=="root" {print}' /etc/passwd
pýta sa na prvé pole, ak je koreňom každého riadku v / etc / passwd a vytlačí ho s ohľadom na „:“ s -F: ako oddeľovačom polí.
Praktické príklady
Zoznam najpoužívanejších príkazov
Zobraziť zoznam založený na histórii systémového terminálu zoradený od najčastejšie používaných po najmenej.
history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head
príklad:

Graf (tabuľka) s počtom pripojení pre každého hostiteľa
Vytvorte textový graf ASCII, ktorý zobrazuje celkový počet pripojení od hostiteľa k každej adrese IP.
netstat -an | grep ESTABLISHED | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | awk '{ printf("%s\t%s\t",$2,$1) ; for (i = 0; i < $1; i++) {printf("*")}; print "" }'
príklad:

Zoznam adresárov podľa veľkosti
Vytlačte na obrazovke zoznam adresárov aktuálnej cesty od najväčšieho po najmenší, ktorý zobrazuje štítky zodpovedajúce ich veľkosti pomocou písmen: g, m a k.
du --max-depth=1 | sort -r -n | awk '{split("k m g",v); s=1; while($1>1024){$1/=1024; s++} print int($1)" "v[s]"\t"$2}'
príklad:

Zobraziť prenos zo sieťového rozhrania
Zobrazujte spotrebu prichádzajúcich a odchádzajúcich údajov online v kilobajtoch (kB) pre zadané sieťové rozhranie.
while [ /bin/true ]; do OLD=$NEW; NEW=`cat /proc/net/dev | grep eth0 | tr -s ' ' | cut -d' ' -f "3 11"`; echo $NEW $OLD | awk '{printf("\rin: % 9.2g\t\tout: % 9.2g", ($1-$3)/1024, ($2-$4)/1024)}'; sleep 1; done
príklad:

Získajte fibonacciho číselnú sériu
Vytvorte zoznam X kvantitatívnych čísel podľa fibonacciho vzoru s 2 základnými číslami, ktoré sa majú zostaviť.
seq 50| awk 'BEGIN {a=1; b=1} {print a; c=a+b; a=b; b=c}'
príklad:

Grafický zoznam štruktúry súborov podľa veľkosti
Získajte zoznam všetkých priečinkov v koreňovom adresári operačného systému spolu s grafikou (pruhy) a číselným vyjadrením ako percento ich veľkosti v ňom.
t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');sudo du / --max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++){printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'
príklad:

Uveďte súhrn typov súborov v adresári
Zobraziť zoznam typov súborov obsiahnutých v adresári spolu s počtom súborov, ktoré mu zodpovedajú.
find . -type f | awk -F'.' '{print $NF}' | sort| uniq -c | sort -g
príklad:

Tieto príklady príkazových riadkov používajúcich príkaz awk Dúfam, že vám prídu veľmi užitočné. Slúžia na priame použitie z konzoly alebo nepriamo ich vložením do skriptu (automatizovaná úloha).
V nasledujúcom príspevku o Shell Scripting preskúmame ďalšie príkazy.
Ak sa chcete dozvedieť viac informácií o príkaze „grep“, navštívte tento odkaz.DEBIÁNSKA Wiki„A ak sa chcete dozvedieť viac informácií o skriptovaní Shell v našom vlastnom blogu, môžete sa pozrieť na naše ďalšie publikácie týkajúce sa tejto témy kliknutím sem: Skriptovanie z FromLinuxu
