Kommandoen "awk" i gratis operativsystemer af GNU / Linux-typen er en meget kraftig kommando, som hjælper os med at have større kontrol, når vi behandler data fra andre kommandoer eller kommandokommandoer. Navnet AWK stammer fra initialerne til dets forfatteres efternavne: Alfred Aho, peter Weinberger og Brian KErnighan.
Denne kommando giver et skriptsprog til tekstbehandling, som vi kan: Definere variabler, bruge strenge og aritmetiske operatorer, bruge flowkontrol og cyklusser og generere formaterede rapporter. Faktisk er Awk mere end bare en kommando til mønsterbehandling, det er et helt semantisk analysesprog.
Introduktion til kommandoen "awk"
AWK var et af de første meget populære konsolværktøjer til at styre (håndtere / udtrække) data ved at maksimere UNIX-rørets funktionalitet. Sprog, der leveres af dette værktøj, er i øjeblikket en standard i næsten alle moderne UNIX-operativsystemer, så meget at det er en del af de grundlæggende UNIX-specifikationer, så det er normalt allerede installeret i de fleste af dem som standard.
Dens mest almindelige syntaks er: awk 'program' filer, og hvor 'program' kan være: mønster {handling} mønster {handling}. Kommandoen læser filinput en linje ad gangen. Hver række sammenlignes med hvert mønster i rækkefølge; For hvert mønster, der matcher rækken, udføres den tilsvarende handling.
Et simpelt eksempel som:
awk -F: '$1=="root" {print}' /etc/passwd
det beder om det første felt, hvis det er rod på hver linje i / etc / passwd og udskriver det i betragtning af ":" med -F: som en feltadskiller.
Praktiske eksempler
Liste over mest anvendte kommandoer
Se en liste baseret på historikken for systemterminalen bestilt fra den hyppigst anvendte til den mindste.
history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head
Eksempel:
Graf (tabel) med antal forbindelser for hver vært
Opret en ASCII-tekstbaseret graf, der viser det samlede antal forbindelser fra værten 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 mapper efter størrelse
Udskriv på skærmen listen over mapper med den aktuelle sti fra den største til den mindste, der viser de labels, der svarer til deres størrelse ved hjælp af bogstaverne: 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 trafik fra et netværksinterface
Se indgående og udgående dataforbrug online i kilobyte (kb) for en bestemt netværksgrænseflade.
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:
Opnå en Fibonacci-nummerserie
Opret en liste med X antal numre efter et Fibonacci mønster givet 2 basenumre, der skal konstrueres.
seq 50| awk 'BEGIN {a=1; b=1} {print a; c=a+b; a=b; b=c}'
Eksempel:
Grafisk oversigt over filstruktur efter størrelse
Få en liste over alle mapper i roden til operativsystemet sammen med grafikken (bjælkerne) og den numeriske repræsentation som en procentdel af deres størrelse inden for 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:
Angiv en oversigt over filtyper i et bibliotek
Vis en liste over de filtyper, der findes i et bibliotek, sammen med antallet af filer, der svarer til det.
find . -type f | awk -F'.' '{print $NF}' | sort| uniq -c | sort -g
Eksempel:
Disse eksempler på kommandolinjer ved hjælp af kommandoen awk Jeg håber, du finder det meget nyttigt. Og de tjener til at blive brugt direkte fra konsollen eller indirekte ved at indsætte dem i et script (automatiseret opgave).
I det næste indlæg på Shell Scripting vil vi udforske andre kommandoer.
Hvis du vil lære lidt mere om kommandoen "grep", besøg dette link "DEBIAN Wiki”Og hvis du vil lære mere om Shell Scripting i vores egen blog, kan du se på vores andre publikationer om emnet ved at klikke her: Scripting DesdeLinux
Jeg forstod kun det første eksempel, intet andet 🙁