Awk: Învățarea scripturilor Shell folosind comanda awk Terminal

Awk: Învățarea scripturilor Shell folosind comanda awk Terminal

Awk: Învățarea scripturilor Shell folosind comanda awk Terminal

Comanda „awk” din Sistemele de operare libere de tip GNU / Linux este o comandă foarte puternică, care ne ajută să avem un control mai mare atunci când procesăm date din alte comenzi sau comenzi. Numele AWK derivă din inițialele prenumelor autorilor săi: Alfred Ahei Peter Weinberger și Brian KErnighan.

Această comandă oferă un limbaj de script pentru procesarea textului cu care putem: Defini variabile, utiliza șiruri și operatori aritmetici, utiliza controlul fluxului și cicluri, și genera rapoarte formatate. De fapt, Awk este mai mult decât o simplă comandă de procesare a modelelor, este un întreg limbaj de analiză semantică.

Introducere în comanda „awk”

AWK a fost unul dintre primele utilitare de consolă foarte populare pentru gestionarea (manipularea / extragerea) datelor prin maximizarea funcționalității conductelor UNIX. Limbajul oferit de acest utilitar este în prezent un standard în aproape toate sistemele de operare moderne de tip UNIX, atât de mult încât face parte din specificațiile de bază UNIX, deci este de obicei instalat deja în majoritatea lor în mod implicit.

Sintaxa sa cea mai obișnuită este: fișiere „program” awk și unde poate fi „program”: model {acțiune} șablon {acțiune}. Comanda citește fișierul introdus rând pe rând. Fiecare rând este comparat cu fiecare model în ordine; pentru fiecare model care se potrivește rândului, se efectuează acțiunea corespunzătoare.

Un exemplu simplu, cum ar fi:

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

cere primul câmp dacă este rădăcina fiecărei linii din / etc / passwd și îl tipărește considerând „:” cu -F: ca separator de câmp.

Exemplu introductiv Awk

Exemple practice

Lista de comenzi cele mai utilizate

Vizualizați o listă bazată pe istoricul terminalului de sistem ordonat de la cel mai frecvent utilizat la cel mai puțin.

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

Exemplu:

Exemplul 1: comanda Awk

Grafic (tabel) cu numărul de conexiuni pentru fiecare gazdă

Creați un grafic ASCII bazat pe text care arată numărul total de conexiuni de la gazdă la fiecare 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 "" }'

Exemplu:

Exemplul 2: comanda Awk

Lista directoarelor după mărime

Imprimați pe ecran lista de directoare ale căii curente de la cea mai mare la cea mai mică, afișând etichetele corespunzătoare dimensiunii acestora folosind literele: 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}'

Exemplu:

Exemplul 3: comanda Awk

Afișați traficul dintr-o interfață de rețea

Vizualizați consumul de date de intrare și de ieșire online în kilobiți (kb) pentru o interfață de rețea specificată.

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

Exemplu:

Obțineți o serie de numere Fibonacci

Creați o listă de numere de cantități X urmând un model Fibonacci, având în vedere 2 numere de bază care urmează să fie construite.

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

Exemplu:

Exemplul 5: comanda Awk

Listare grafică a structurii fișierelor după mărime

Obțineți o listă a tuturor folderelor din rădăcina sistemului de operare, împreună cu reprezentarea grafică (bare) și numerică ca procent din dimensiunea lor în cadrul acestuia.

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

Exemplu:

Exemplul 6: comanda Awk

Enumerați un rezumat al tipurilor de fișiere dintr-un Director

Afișați o listă a tipurilor de fișiere conținute într-un director împreună cu numărul de fișiere care îi corespund.

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

Exemplu:

Exemplul 8: comanda Awk

Aceste exemple de linii de comandă folosind comanda awk sper să le găsiți foarte utile. Și servesc pentru a fi utilizate direct din consolă sau indirect prin inserarea lor într-un script (sarcină automată).

În următoarea postare despre Shell Scripting vom explora alte comenzi.

Dacă doriți să aflați mai multe despre comanda "grep", vizitați acest link "DEBIAN Wiki”Și dacă doriți să aflați mai multe despre Shell Scripting în propriul nostru blog, puteți arunca o privire la celelalte publicații pe acest subiect, făcând clic aici: Scriptarea în FromLinux