Awk: Učenje skripti ljuske pomoću komande awk terminala
Naredba "awk" u besplatnim operativnim sustavima tipa GNU / Linux vrlo je moćna naredba koja nam pomaže da imamo veću kontrolu prilikom obrade podataka iz drugih naredbi ili naredbi naredbi. Ime AWK potječe od inicijala prezimena njegovih autora: Alfred Ahey peter Weinberger i Brian Kernighan
Ova naredba pruža skriptni jezik za obradu teksta pomoću kojeg možemo: Definirati varijable, koristiti nizove i aritmetičke operatore, koristiti kontrolu protoka i cikluse i generirati formatirane izvještaje. Zapravo, Awk je više od puke naredbe za obradu uzoraka, to je čitav jezik semantičke analize.
Uvod u naredbu "awk"
AWK je bio jedan od prvih vrlo popularnih uslužnih programa konzole za upravljanje (rukovanje / izdvajanje) podataka maksimiziranjem funkcionalnosti UNIX cjevovoda. Jezik koji nudi ovaj uslužni program trenutno je standard u gotovo svim modernim operativnim sistemima sličnim UNIX-u, toliko da je dio osnovnih UNIX-ovih specifikacija, pa je u većini njih po defaultu već instaliran.
Njegova najčešća sintaksa je: awk 'program' datoteke i gdje 'program' može biti: pattern {action} pattern {action}. Naredba čita unos datoteke jedan po jedan redak. Svaki red se uspoređuje sa svakim uzorkom; Za svaki obrazac koji odgovara redu izvršava se odgovarajuća radnja.
Jednostavan primjer poput:
awk -F: '$1=="root" {print}' /etc/passwd
traži prvo polje ako je korijen svakog retka u / etc / passwd i ispisuje ga uzimajući u obzir ":" sa -F: kao separator polja.
Praktični primjeri
Popis najčešće korištenih naredbi
Pregledajte listu zasnovanu na povijesti sistemskog terminala poredane od najčešće korištenih do najmanjih.
history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head
Primjer:

Grafikon (tablica) s brojem veza za svaki domaćin
Stvorite ASCII grafikon zasnovan na tekstu koji prikazuje ukupan broj veza od hosta do svake IP adrese.
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 "" }'
Primjer:

Spisak direktorija po veličini
Ispišite na ekranu popis direktorija trenutne putanje od najvećeg do najmanjeg koji prikazuje oznake koje odgovaraju njihovoj veličini pomoću slova: g, m i 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}'
Primjer:

Prikažite promet sa mrežnog sučelja
Pregledajte potrošnju ulaznih i izlaznih podataka na mreži u kilobajtima (kb) za određeno mrežno sučelje.
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
Primjer:

Dobiti fibonačijevu seriju brojeva
Stvorite listu X brojeva količina slijedeći fibonačijev obrazac s obzirom na 2 osnovna broja koja treba konstruirati.
seq 50| awk 'BEGIN {a=1; b=1} {print a; c=a+b; a=b; b=c}'
Primjer:

Grafički popis strukture datoteke prema veličini
Nabavite Popis svih mapa u korijenu operativnog sistema, zajedno s grafikom (trake) i numeričkim prikazom kao procenat njihove veličine unutar njega.
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"}'
Primjer:

Navedite sažetak tipova datoteka u direktoriju
Prikažite listu vrsta datoteka sadržanih u direktorijumu zajedno s odgovarajućim brojem datoteka.
find . -type f | awk -F'.' '{print $NF}' | sort| uniq -c | sort -g
Primjer:

Ovi primjeri naredbenih linija pomoću awk naredbe nadam se da će vam biti vrlo korisni. A služe za upotrebu izravno s konzole ili indirektno umetanjem u skriptu (automatizirani zadatak).
U sljedećem postu o Shell Scriptingu istražit ćemo druge naredbe.
Ako želite saznati malo više o naredbi "grep", posjetite ovaj link "DEBIAN Wiki”A ako želite saznati više o Shell skriptiranju na našem vlastitom blogu, možete pogledati naše ostale publikacije na tu temu, klikom ovdje: Skriptiranje u FromLinuxu
