Awk: Lære Shell Scripting ved hjelp av awk Terminal Command

Awk: Lære Shell Scripting ved hjelp av awk Terminal Command

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.

Innledende eksempel Awk

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:

Eksempel 1: Kommando for Awk

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:

Eksempel 2: Kommando for Awk

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:

Eksempel 3: Kommando for Awk

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:

Eksempel 5: Kommando for Awk

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:

Eksempel 6: Kommando for Awk

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:

Eksempel 8: Kommando for Awk

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