Awk: Lære Shell Scripting ved hjelp av awk Terminal Command
Kommandoen "awk" i gratis operativsystemer av GNU / Linux-typen er en veldig kraftig kommando, som hjelper oss å ha større kontroll når vi behandler data fra andre kommandoer eller kommandoer. Navnet AWK stammer fra initialene til etternavnene til forfatterne: Alfred Aho, peter Weinberger, og Brian KErnighan.
Denne kommandoen gir et skriptspråk for tekstbehandling som vi kan: Definere variabler, bruke strenger og aritmetiske operatorer, bruke flytkontroll og sykluser, og generere formaterte rapporter. Egentlig er Awk mer enn bare en mønsterbehandlingskommando, det er et helt semantisk analysespråk.
Introduksjon til "awk" -kommandoen
AWK var et av de første veldig populære konsollverktøyene for å administrere (håndtere / trekke ut) data ved å maksimere funksjonaliteten til UNIX-rørledninger. Språket som tilbys av dette verktøyet er for tiden en standard i nesten alle moderne UNIX-lignende operativsystemer, så mye at det er en del av de grunnleggende UNIX-spesifikasjonene, så det er vanligvis allerede installert i de fleste av dem som standard.
Den vanligste syntaksen er: awk 'programfiler og hvor' program 'kan være: mønster {handling} mønster {handling}. Kommandoen leser filinngangen en linje om gangen. Hver rad sammenlignes med hvert mønster i rekkefølge; for hvert mønster som samsvarer med raden, utføres den tilsvarende handlingen.
Et enkelt eksempel som:
awk -F: '$1=="root" {print}' /etc/passwd
den ber om det første feltet hvis det er roten til hver linje i / etc / passwd og skriver det ut med tanke på ":" med -F: som en feltskiller.
Praktiske eksempler
Mest brukte kommandoliste
Vis en liste basert på historikken til systemterminalen som er bestilt fra de mest brukte til de minste.
history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head
Eksempel:

Graf (tabell) med antall tilkoblinger for hver vert
Opprett en ASCII-tekstbasert graf som viser det totale antallet tilkoblinger fra verten til hver IP-adresse.
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 "" }'
Eksempel:

Liste over kataloger etter størrelse
Skriv ut på skjermen listen over kataloger for den nåværende banen fra den største til den minste, som viser etikettene som tilsvarer størrelsen ved hjelp av bokstavene: g, m og 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}'
Eksempel:

Vis trafikk fra et nettverksgrensesnitt
Se inn- og utgående dataforbruk online i kilobyte (kb) for et spesifisert nettverksgrensesnitt.
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
Eksempel:

Skaff deg en Fibonacci-tallserie
Lag en liste over X antall tall etter et Fibonacci mønster gitt to basenumre som skal konstrueres.
seq 50| awk 'BEGIN {a=1; b=1} {print a; c=a+b; a=b; b=c}'
Eksempel:

Grafisk oversikt over filstruktur etter størrelse
Få en liste over alle mappene i roten til operativsystemet, sammen med grafikken (søylene) og den numeriske representasjonen som en prosentandel av størrelsen i det.
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"}'
Eksempel:

Liste et sammendrag av filtyper i en katalog
Vis en liste over filtypene som finnes i en katalog, sammen med antall filer som tilsvarer den.
find . -type f | awk -F'.' '{print $NF}' | sort| uniq -c | sort -g
Eksempel:

Disse eksemplene på kommandolinjer ved hjelp av awk-kommandoen Jeg håper du synes de er veldig nyttige. Og de brukes til å brukes direkte fra konsollen eller indirekte ved å sette dem inn i et skript (automatisert oppgave).
I neste innlegg på Shell Scripting vil vi utforske andre kommandoer.
Hvis du vil lære litt mer om "grep" -kommandoen, kan du gå til denne lenken "DEBIAN Wiki”Og hvis du vil lære mer om Shell Scripting i vår egen blogg, kan du se på de andre publikasjonene våre om emnet, ved å klikke her: Skripting i FromLinux
