Awk: Učenje skriptov lupine z uporabo ukaza Terminal awk

Awk: Učenje skriptov lupine z uporabo ukaza Terminal awk

Awk: Učenje skriptov lupine z uporabo ukaza Terminal awk

Ukaz "awk" v brezplačnih operacijskih sistemih tipa GNU / Linux je zelo zmogljiv ukaz, ki nam pomaga imeti večji nadzor pri obdelavi podatkov iz drugih ukazov ali ukazov. Ime AWK izhaja iz začetnic priimkov njegovih avtorjev: Alfred Aho, peter Weinberger in Brian Kernighan

Ta ukaz ponuja skriptni jezik za obdelavo besedila, s katerim lahko: Določimo spremenljivke, uporabljamo nize in aritmetične operatorje, uporabljamo nadzor pretoka in cikle ter ustvarjamo formatirana poročila. Pravzaprav je Awk več kot le ukaz za obdelavo vzorcev, je celoten jezik semantične analize.

Uvod v ukaz "awk"

AWK je bil eden prvih zelo priljubljenih pripomočkov za konzolo za upravljanje (obdelavo / ekstrahiranje) podatkov s povečanjem funkcionalnosti cevi UNIX. Jezik, ki ga ponuja ta pripomoček, je trenutno standard v skoraj vseh sodobnih operacijskih sistemih, podobnih UNIX-u, tako da je del osnovnih specifikacij UNIX-a, zato je v večini običajno privzeto nameščen.

Njegova najpogostejša sintaksa je: awk 'program' datoteke in kje je 'program' lahko: pattern {action} pattern {action}. Ukaz prebere vnos datoteke eno vrstico naenkrat. Vsaka vrstica se primerja z vsakim vzorcem po vrsti; Za vsak vzorec, ki se ujema z vrstico, se izvede ustrezno dejanje.

Preprost primer, kot je:

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

zahteva prvo polje, če je koren vsake vrstice v / etc / passwd, in ga natisne ob upoštevanju znaka ":" z -F: kot ločilo polja.

Uvodni primer Awk

Praktični primeri

Seznam najpogosteje uporabljenih ukazov

Oglejte si seznam, ki temelji na zgodovini sistemskega terminala, razvrščenega med najpogosteje uporabljenimi in najmanj.

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

Primer:

Primer 1: Ukaz Awk

Graf (tabela) s številom povezav za vsakega gostitelja

Ustvarite ASCII besedilni graf, ki prikazuje skupno število povezav od gostitelja do vsakega naslova 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 "" }'

Primer:

Primer 2: Ukaz Awk

Seznam imenikov po velikosti

Na zaslon natisnite seznam imenikov trenutne poti od največjega do najmanjšega, ki prikazuje oznake, ki ustrezajo njihovi velikosti, s črkami: g, m in 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}'

Primer:

Primer 3: Ukaz Awk

Prikažite promet iz omrežnega vmesnika

Oglejte si spletno porabo dohodnih in odhodnih podatkov v kilobajtih (kb) za določen omrežni vmesnik.

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

Primer:

Pridobite fibonacijevo število

Ustvarite seznam X količinskih števil po fibonacijevem vzorcu z navedbo 2 osnovnih števil, ki jih je treba sestaviti.

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

Primer:

Primer 5: Ukaz Awk

Grafični seznam strukture datotek po velikosti

Pridobite seznam vseh map v korenu operacijskega sistema, skupaj z grafiko (stolpci) in številskim prikazom kot odstotek njihove velikosti v njem.

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

Primer:

Primer 6: Ukaz Awk

V imeniku navedite povzetek vrst datotek

Pokažite seznam vrst datotek v imeniku skupaj z ustreznim številom datotek.

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

Primer:

Primer 8: Ukaz Awk

Ti primeri ukaznih vrstic z uporabo ukaza awk, upam, da se vam zdijo zelo koristni. Uporabljajo se lahko za neposredno uporabo konzole ali posredno z vstavljanjem v skript (avtomatizirano opravilo).

V naslednjem prispevku o Shell Scripting bomo raziskali druge ukaze.

Če želite izvedeti nekaj več o ukazu "grep", obiščite to povezavo "DEBIAN Wiki”In če želite izvedeti več o Shell Scriptingu v našem blogu, si lahko ogledate naše druge publikacije na to temo, tako da kliknete tukaj: Skriptiranje v programu FromLinux