Denne artikkelen vil kjøre deg gjennom noen interessante AWK -kommandoer og når du skal bruke dem. Les videre for å finne ut av! Introduksjon til AWK
AWK er et populært språk i Unix og Linux. Det fikk navnet sitt fra forfatterne: Alfred Aho, Peter Weinberger og Brian Kernighan. AWK -kommandoen gir tilgang til AWK -programmeringsspråket, som er designet for å behandle data innen tekststrømmer.
AWK er populært brukt til skanningsmønstre og forenkle komplekse operasjoner, og hjelper deg med å skrive effektive utsagn for å definere tekstmønstre i en fil. AWK -kommandoen behandler deretter disse uttalelsene ved å lese en linje om gangen og tar en handling basert på tilstanden som er gitt.
Enkelt sagt finner AWK og erstatter tekst, og hjelper til med å sortere, validere eller indeksere de gitte dataene.
Funksjoner av AWK
AWK kommer med mange unike funksjoner:
- Ingen samling er nødvendig i AWK
- Ofte brukt til datautvinning
- Ofte brukt til å utføre tekstmanipulering
- Hjelper til med å generere resultater etter behov.
La oss nå utforske kraften til AWK -kommandoene.
15 interessante AWK -kommandoer
Her er en samlet liste over noen interessante AWK -kommandoer:
- Skrive ut tilfeldige tall i et sett - Anta at du vil skrive ut noen få tilfeldige tall fra et valgt basseng. Du kan spesifisere mengden tilfeldige tall fra dette bassenget og be AWK om å skrive ut dette. Her er et eksempel: La oss skrive ut 10 tall fra 0 til 1000. Så AWK -kommandoen for dette vil være som følger: awk 'Begynn for (i = 1; i <= 10; i++)
skriv ut int (1001 * rand ()) '
- Søker etter foo eller bar - Hva om du vil skrive en linje der du vil utføre et enkelt søk etter foo eller bar? Her er en kommando som lar deg gjøre nettopp det: hvis (/foo/||/bar/)
trykk "funnet!""
- Omorganisere et felt - Hvis du vil skrive ut et bestemt felt i en bestemt rekkefølge, kan AWK gjøre det for deg. Anta at du vil skrive ut de første 5 feltene i et bestemt sett i ett felt per linje, du kan bruke følgende kommando: awk 'i = 1
mens jeg <= 3)
Skriv ut $ i
Jeg++
'inputfile
- Deling en linje - I et gitt sett med filer kan AWK bidra til å dele en linje i felt, der X er navnet på feltet: $ awk 'print $ x, $ x' xyz.tekst
- Kjører flere kommandoer samtidig - For å kjøre flere kommandoer samtidig, kan du bruke en semikolon for å spesifisere begge kommandoene: $ ekko "God morgen! Jack "| awk '$ 2 =" Jill "; skriv ut $ 0'
- Utføre et AWK -skript - Hvis du vil utføre et AWK -skript fra en bestemt fil, kan du opprette en fil SUM_COLUMN og lime inn skriptet nedenfor i den filen: #!/usr/bin/awk -f
Begynn sum = 0
sum = sum+$ x
Slutt Print Sum I skriptet ovenfor tilsvarer X kolonnen du trenger å legge inn i filen. Når du er vellykket gjennomføring av denne oppgaven, kan du bruke følgende kommando til å vise summen av x -kolonnen i inndatafilen:
awk -f sum_column input_file.
- Bruker -f - Når koding kan det ofte virke upraktisk å referere til terminalen. AWK bruker -F for å utføre søk fra en fil: AWK -f -skript.awk inputfile
- Utføre matematikkfunksjoner - Du kan også bruke AWK til enkle matematikkfunksjoner: AWK 'sum = $ 2 + $ 3 + $ 4; AVG = sum / 3
> Skriv ut $ 1, AVG 'karakterer
- Hei verden i awk - Du kan skrive ut en enkel Hello World i AWK ved hjelp av følgende kommando: AWK "Begynn Print" Hello World!!""
Du kan også lage et Hello World -program. Følgende kode vil ikke bare skrive ut allestedsnærværende Hello -meldingen, men vil også generere overskriftsinformasjon:
$ awk 'Begynn trykk "Hello World!" '
- Skrive ut det totale antallet byte - Du kan finne ut de totale byte som brukes av filer ved hjelp av følgende kommando: ls -l . | awk 'x += $ 5; SLUTT \
Skriv ut "Total byte:" X '
Totalt byte: 7449362
- Anonymisering av en Apache -log - Du kan bruke følgende kode til å anonymisere en Apache-log: Cat Apache-Anon-Noadmin.logg | \
awk 'funksjon ri (n) \
return int (n*rand ()); \
Begynn Srand (); if (! \
($ 5 i Jack)) \
Jack [$ 5] = Sprintf ("%D.%d.%d.%d ", \
RI (255), RI (255) \
, RI (255), RI (255)); \
$ 5 = Jack [$ 5]; skriv ut __g5_token5b610ba53dbe4 '
- Opererer i rader - Hvis du har en adresse du vil sortere i rader, kan du gjøre det ved å bruke følgende kommando: begynn rs = ""; Fs = "\ n"
Skriv ut "Navnet er:", $ 1
Skriv ut "adresse er:", $ 2
Skriv ut "By og stat er:", $ 3
skrive ut ""
- Bruker mens loop - Mens sløyfen fortsetter å utføre handlingen gitt til den i en gjentatt prosess til tilstanden er sann. For å skrive ut tall fra 1 til 100, kan du for eksempel bruke følgende kode: awk 'Begynn i = 1; mens jeg < 100) print i; ++i '
- Bruke do-mens Loop - I denne sløyfen blir tilstanden utført på slutten av løkken selv om uttalelsen er falsk. For å skrive ut tall fra 1 til 100 ved hjelp av en do-mens du for eksempel kan du bruke følgende kode: awk 'Begynn i = 1; do print i; ++ i mens (jeg < 100) '
- Bruker begynn og slutt - Begynnende nøkkelord brukes til å lage en overskrift for å behandle posten din: $ awk 'begynn print "xxx"
På samme måte brukes sluttnøkkelordet etter behandling av dataene:
Slutt skriv ut "Filfoten" '
Dette avslutter listen over 15 interessante AWK -kommandoer. Du kan prøve disse og se resultatene. Håper du synes det er nyttig. Hvis du fant denne artikkelen interessant, kan du utforske Mastering Linux Shell Scripting - Second Edition. I denne boken vil du oppdage alt du trenger å vite for å mestre skallskripting og ta informerte valg om elementene du bruker.