Awk: Učenje skripti ljuske pomoću komande awk terminala

Awk: Učenje skripti ljuske pomoću komande awk terminala

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.

Uvodni primjer Awk

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:

Primjer 1: Naredba Awk

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:

Primjer 2: Naredba Awk

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:

Primjer 3: Naredba Awk

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:

Primjer 5: Naredba Awk

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:

Primjer 6: Naredba Awk

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:

Primjer 8: Naredba Awk

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