Awk: Learning Shell Scripting using a awk Terminal Command

Awk: Learning Shell Scripting using a awk Terminal Command

Awk: Learning Shell Scripting using a awk Terminal Command

Příkaz „awk“ ve svobodných operačních systémech typu GNU / Linux je velmi výkonný příkaz, který nám pomáhá mít větší kontrolu nad zpracováním dat z jiných příkazů nebo příkazů. Jméno AWK je odvozeno od iniciál příjmení jeho autorů: Alfred Aho, peter Weinberger a Brian KErnighan.

Tento příkaz poskytuje skriptovací jazyk pro zpracování textu, pomocí kterého můžeme: Definovat proměnné, používat řetězce a aritmetické operátory, používat řízení toku a cykly a generovat formátované zprávy. Awk je ve skutečnosti víc než jen příkaz pro zpracování vzoru, je to celý jazyk sémantické analýzy.

Úvod do příkazu „awk“

AWK byl jedním z prvních velmi oblíbených nástrojů konzoly pro správu (manipulaci / extrakci) dat maximalizací funkčnosti kanálů UNIX. Jazyk poskytovaný tímto nástrojem je v současné době standardem téměř ve všech moderních operačních systémech typu UNIX, a to natolik, že je součástí základních specifikací systému UNIX, takže je ve většině z nich již ve výchozím nastavení nainstalován.

Jeho nejběžnější syntaxe je: awk „programové“ soubory a kde „program“ může být: pattern {action} pattern {action}. Příkaz čte vstup souboru po jednom řádku. Každý řádek je porovnáván s každým vzorem v pořadí; U každého vzoru, který odpovídá řádku, se provede odpovídající akce.

Jednoduchý příklad jako:

awk -F: '$1=="root" {print}' /etc/passwd

zeptá se na první pole, pokud je kořenem každého řádku v / etc / passwd a vytiskne jej s ohledem na ":" s -F: jako oddělovačem pole.

Úvodní příklad Awk

Praktické příklady

Seznam nejpoužívanějších příkazů

Zobrazte seznam založený na historii terminálu systému seřazený od nejčastěji používaných po nejméně.

history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head

příklad:

Příklad 1: Příkaz Awk

Graf (tabulka) s počtem připojení pro každého hostitele

Vytvořte textový graf ASCII, který zobrazuje celkový počet připojení z hostitele ke každé 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 "" }'

příklad:

Příklad 2: Příkaz Awk

Seznam adresářů podle velikosti

Vytiskněte na obrazovce seznam adresářů aktuální cesty od největšího po nejmenší a zobrazte štítky odpovídající jejich velikosti pomocí 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}'

příklad:

Příklad 3: Příkaz Awk

Zobrazit provoz ze síťového rozhraní

Zobrazte spotřebu příchozích a odchozích dat online v kilobajtech (kB) pro zadané síťové rozhraní.

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

příklad:

Získejte fibonacciho číselnou řadu

Vytvořte seznam X kvantitativních čísel podle fibonacciho vzoru s 2 základními čísly, která mají být vytvořena.

seq 50| awk 'BEGIN {a=1; b=1} {print a; c=a+b; a=b; b=c}'

příklad:

Příklad 5: Příkaz Awk

Grafický výpis struktury souborů podle velikosti

Získejte seznam všech složek v kořenovém adresáři operačního systému spolu s grafikou (pruhy) a číselným vyjádřením jako procento jejich velikosti v něm.

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"}'

příklad:

Příklad 6: Příkaz Awk

Seznam souhrnů typů souborů v adresáři

Zobrazit seznam typů souborů obsažených v adresáři spolu s počtem souborů, které mu odpovídají.

find . -type f | awk -F'.' '{print $NF}' | sort| uniq -c | sort -g

příklad:

Příklad 8: Příkaz Awk

Tyto příklady příkazových řádků pomocí příkazu awk Doufám, že vám to připadá velmi užitečné. A slouží k použití přímo z konzoly nebo nepřímo jejich vložením do skriptu (automatizovaný úkol).

V dalším příspěvku na Shell Scripting prozkoumáme další příkazy.

Pokud se chcete dozvědět něco více o příkazu „grep“, navštivte tento odkaz “DEBIAN Wiki„A pokud se chcete o Shell Scripting dozvědět více v našem vlastním blogu, můžete se podívat na naše další publikace k tomuto tématu kliknutím sem: Skriptování v FromLinuxu