Awk: At lære Shell Scripting ved hjælp af awk Terminal Command

Awk: At lære Shell Scripting ved hjælp af awk Terminal Command

Awk: At lære Shell Scripting ved hjælp af awk Terminal Command

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.

Indledende eksempel Awk

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:

Eksempel 1: Awk-kommando

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:

Eksempel 2: Awk-kommando

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:

Eksempel 3: Awk-kommando

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:

Eksempel 5: Awk-kommando

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:

Eksempel 6: Awk-kommando

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:

Eksempel 8: Awk-kommando

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


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   tuxito sagde han

    Jeg forstod kun det første eksempel, intet andet 🙁