Awk: Lär dig Shell Scripting med hjälp av awk Terminal Command
Kommandot "awk" i fria operativsystem av GNU / Linux-typen är ett mycket kraftfullt kommando, vilket hjälper oss att ha större kontroll när vi bearbetar data från andra kommandon eller kommandon. Namnet AWK kommer från initialerna till dess författares efternamn: Alfred Aho, peter Weinberger och Brian KErnighan.
Detta kommando ger ett skriptspråk för textbehandling med vilket vi kan: Definiera variabler, använda strängar och aritmetiska operatorer, använda flödeskontroll och cykler och generera formaterade rapporter. Egentligen är Awk mer än bara ett mönsterbehandlingskommando, det är ett helt semantiskt analysspråk.
Introduktion till kommandot "awk"
AWK var ett av de första mycket populära konsolverktygen för att hantera (hantera / extrahera) data genom att maximera UNIX-rörledningens funktionalitet. Språket som tillhandahålls av det här verktyget är för närvarande en standard i nästan alla moderna UNIX-liknande operativsystem, så mycket att det är en del av de grundläggande UNIX-specifikationerna, så det är vanligtvis redan installerat i de flesta av dem som standard.
Den vanligaste syntaxen är: awk 'programfiler och var' program 'kan vara: mönster {action} mönster {action}. Kommandot läser filinmatningen en rad i taget. Varje rad jämförs med varje mönster i ordning; för varje mönster som matchar raden utförs motsvarande åtgärd.
Ett enkelt exempel som:
awk -F: '$1=="root" {print}' /etc/passwd
det frågar efter det första fältet om det är roten till varje rad i / etc / passwd och skriver ut det med tanke på ":" med -F: som fältseparator.
Praktiska exempel
Mest använda kommandolistan
Visa en lista baserad på historiken för systemterminalen som beställts från de mest använda till de minsta.
history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head
Exempelvis:

Diagram (tabell) med antal anslutningar för varje värd
Skapa ett ASCII-textbaserat diagram som visar det totala antalet anslutningar från värden till varje IP-adress.
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 "" }'
Exempelvis:

Lista över kataloger efter storlek
Skriv ut på skärmen en lista över kataloger för den aktuella sökvägen från den största till den minsta som visar etiketterna som motsvarar deras storlek med bokstäverna: g, m och 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}'
Exempelvis:

Visa trafik från ett nätverksgränssnitt
Visa inkommande och utgående dataförbrukning online i kilobyte (kb) för ett specifikt nätverksgränssnitt.
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
Exempelvis:

Skaffa en Fibonacci-nummerserie
Skapa en lista över X-kvantitetsnummer enligt ett mönstermönster med två basnummer som ska konstrueras.
seq 50| awk 'BEGIN {a=1; b=1} {print a; c=a+b; a=b; b=c}'
Exempelvis:

Grafisk lista över filstruktur efter storlek
Skaffa en lista över alla mappar i operativsystemets rot tillsammans med grafiken (staplarna) och den numeriska representationen i procent av storleken i den.
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"}'
Exempelvis:

Lista en sammanfattning av filtyper i en katalog
Visa en lista över de typer av filer som finns i en katalog tillsammans med antalet filer som motsvarar den.
find . -type f | awk -F'.' '{print $NF}' | sort| uniq -c | sort -g
Exempelvis:

Dessa exempel på kommandorader med awk-kommandot Jag hoppas att du tycker att de är mycket användbara. Och de används för att användas direkt från konsolen eller indirekt genom att infoga dem i ett skript (automatiserad uppgift).
I nästa inlägg på Shell Scripting kommer vi att utforska andra kommandon.
Om du vill lära dig lite mer om kommandot "grep", besök den här länken "DEBIAN Wiki”Och om du vill lära dig mer om Shell Scripting i vår egen bloggkan du ta en titt på våra andra publikationer om ämnet genom att klicka här: Skriptning i FromLinux
