Awk: Mësoni Shkrimin e Shellit duke përdorur komandën e terminalit awk
Komanda "awk" në Sistemet Operative të Lirë të tipit GNU / Linux është një komandë shumë e fuqishme, e cila na ndihmon të kemi kontroll më të madh kur përpunojmë të dhëna nga komanda ose komanda të tjera. Emri AWK rrjedh nga inicialet e mbiemrave të autorëve të saj: Alfred Aho, peter Weinberger, dhe Brian Kernigani.
Kjo komandë siguron një gjuhë skriptimi për përpunimin e tekstit me të cilën mund të: Përcaktojmë ndryshoret, përdorim vargjet dhe operatorët aritmetikë, përdorim kontrollin e rrjedhës dhe ciklet, dhe gjenerojmë raporte të formatuara. Në të vërtetë, Awk është më shumë sesa thjesht një komandë e përpunimit të modelit, është një gjuhë e tërë e analizës semantike.
Hyrje në komandën "awk"
AWK ishte një nga shërbimet e para shumë të njohura të konsolës për menaxhimin (trajtimin / nxjerrjen) e të dhënave duke maksimizuar funksionalitetin e tubacioneve UNIX. Gjuha e siguruar nga kjo pajisje është aktualisht një standard në pothuajse të gjitha Sistemet Operative moderne, të ngjashme me UNIX, aq sa është pjesë e Specifikimeve themelore të UNIX, kështu që zakonisht është instaluar tashmë në shumicën e tyre si parazgjedhje.
Sintaksa e saj më e zakonshme është: skedarët awk 'program' dhe ku mund të jetë 'programi': modeli {veprim} modeli {veprim}. Komanda lexon futjen e skedarit një rresht në të njëjtën kohë. Çdo rresht krahasohet me secilin model sipas radhës; për secilin model që përputhet me rreshtin, kryhet veprimi përkatës.
Një shembull i thjeshtë si:
awk -F: '$1=="root" {print}' /etc/passwd
ai kërkon fushën e parë nëse është rrënjë e secilës rresht në / etc / passwd dhe e shtyp atë duke marrë parasysh ":" me -F: si një ndarës fushe.
Shembuj praktikë
Lista e komandave më të përdorura
Shikoni një listë bazuar në historikun e terminalit të Sistemit të porositur nga ato që përdoren më së shpeshti për më pak.
history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head
Shembull:

Grafiku (Tabela) me numrin e lidhjeve për secilin host
Krijoni një grafik të bazuar në tekst ASCII që tregon numrin e përgjithshëm të lidhjeve nga hosti në secilën adresë 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 "" }'
Shembull:

Lista e Drejtorive sipas madhësisë
Shtypni në ekran listën e direktorive të shtegut aktual nga më i madhi tek më i vogli duke treguar etiketat që korrespondojnë me madhësinë e tyre duke përdorur shkronjat: g, m dhe 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}'
Shembull:

Shfaq trafikun nga një ndërfaqe rrjeti
Shikoni konsumin e të dhënave përbrenda dhe përbrenda në internet në kilobajt (kb) për një ndërfaqe të specifikuar të rrjetit.
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
Shembull:

Merrni një seri numrash të nivelit të ulët
Krijoni një listë të numrave të sasisë X duke ndjekur një model të nivelit të dytë, dhënë 2 numra bazë që do të ndërtohen.
seq 50| awk 'BEGIN {a=1; b=1} {print a; c=a+b; a=b; b=c}'
Shembull:

Lista grafike e strukturës së skedarit sipas madhësisë
Merrni një listë të të gjithë dosjeve në rrënjën e sistemit operativ së bashku me paraqitjen grafike (shiritat) dhe numerike si një përqindje e madhësisë së tyre brenda tij.
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"}'
Shembull:

Renditni një përmbledhje të llojeve të skedarëve në një Drejtori
Tregoni një listë të llojeve të skedarëve që përmbahen në një direktori së bashku me numrin e skedarëve që korrespondojnë me të.
find . -type f | awk -F'.' '{print $NF}' | sort| uniq -c | sort -g
Shembull:

Këta shembuj të linjave të komandave që përdorin komandën awk shpresoj se i shihni shumë të dobishme. Dhe ato janë përdorur për t'u përdorur direkt nga tastiera ose indirekt duke i futur ato në një skenar (detyrë e automatizuar).
Në postimin tjetër në Shell Scripting ne do të shqyrtojmë komanda të tjera.
Nëse dëshironi të mësoni pak më shumë rreth komandës "grep", vizitoni këtë lidhje "DEBIAN Wiki"Dhe nëse doni të mësoni më shumë rreth Shkrimit të Shell në Blogun tonë, ju mund të hidhni një vështrim në botimet tona të tjera mbi këtë temë, duke klikuar këtu: Shkrimet në FromLinux
