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.
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:

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:

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:

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:

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:

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:

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
