Awk: Lär dig Shell Scripting med hjälp av awk Terminal Command

Awk: Lär dig Shell Scripting med hjälp av awk Terminal Command

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.

Inledningsexempel Awk

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:

Exempel 1: Awk-kommando

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:

Exempel 2: Awk-kommando

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:

Exempel 3: Awk-kommando

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:

Exempel 5: Awk-kommando

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:

Exempel 6: Awk-kommando

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:

Exempel 8: Awk-kommando

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