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. Kommandoen awk gir tilgang til programmeringsspråket AWK, som er designet for å behandle data i tekststrømmer.
Awk brukes ofte til å skanne mønstre og forenkle komplekse operasjoner, og hjelper deg med å skrive effektive utsagn for å definere tekstmønstre i en fil. Awk-kommandoen behandler deretter disse utsagnene ved å lese en linje om gangen og tar en handling basert på gitt tilstand.
Enkelt sagt, awk finner og erstatter tekst, og hjelper til med å sortere, validere eller indeksere gitte data.
Funksjoner i AWK
awk kommer med mange unike funksjoner:
- Ingen kompilering er nødvendig i vanskeligheter
- Brukes ofte til datautvinning
- Vanligvis brukt til å utføre tekstmanipulering
- Hjelper 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 tilfeldige tall fra en valgt gruppe. Du kan spesifisere antall 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å kommandoen awk for dette vil være som følger: awk 'BEGIN 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: if (/ foo / || / bar /)
utskrift "Fant!"
- 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 fem første feltene i et bestemt sett i ett felt per linje, du kan bruke følgende kommando: awk 'i = 1
mens jeg <= 3)
skrive ut $ i
Jeg++
'inputfil
- Å dele en linje - I et gitt sett med filer kan awk hjelpe til med å dele en linje i felt, hvor 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 semikolon til å spesifisere begge kommandoene: $ echo "God morgen! Jack "| awk '$ 2 =" Jill "; skriv ut $ 0'
- Å utføre et awk-skript - Hvis du vil kjøre et awk-skript fra en bestemt fil, kan du opprette en sum_kolonne for filen og lime inn skriptet nedenfor i den filen: #!/ usr / bin / awk -f
BEGIN sum = 0
sum = sum + $ x
SLUT utskriftssumI skriptet ovenfor er x lik kolonnen du trenger å legge inn i filen. Når denne oppgaven er fullført, kan du bruke følgende kommando til å vise summen av x-kolonnen i inndatafilen:
awk -f sum_column input_file.
- Bruke -f - Ved koding kan det ofte virke upraktisk å referere til terminalen. awk bruker -f for å utføre søk fra en fil: awk -f script.awk inputfile
- Utføre matematiske funksjoner - Du kan også bruke awk for enkle matematiske funksjoner: awk 'sum = $ 2 + $ 3 + $ 4; gjennomsnitt = sum / 3
> skriv ut $ 1, gjennomsnittlig karakterer
- Hello World in awk - Du kan skrive ut en enkel Hello World i awk ved å bruke følgende kommando: awk "BEGIN print" Hello World!!""
Du kan også lage et Hello World-program. Følgende kode vil ikke bare skrive ut den allestedsnærværende hei-meldingen, men også generere topptekstinformasjon:
$ awk 'BEGIN print "Hello World!""
- Skriver ut totalt antall byte - Du kan finne ut antall byte som brukes av filer ved å bruke følgende kommando: ls -l . | awk 'x + = $ 5; SLUTT \
print "total bytes:" x '
totalt byte: 7449362
- Anonymisering av en Apache-logg - Du kan bruke følgende kode for å anonymisere en Apache-logg: cat apache-anon-noadmin.logg | \
awk 'funksjon ri (n) \
Return int (n * rand ()); \
BEGIN 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 som du vil sortere i rader, kan du gjøre det ved å bruke følgende kommando: BEGIN RS = ""; FS = "\ n"
skriv ut "Navn er:", $ 1
skriv ut "Adresse er:", $ 2
trykk "By og stat er:", $ 3
skrive ut ""
- Bruke mens løkken - Mens loop fortsetter å utføre handlingen gitt i en gjentatt prosess til tilstanden er oppfylt. For eksempel, for å skrive ut tall fra 1 til 100, kan du bruke følgende kode: awk 'BEGIN i = 1; mens jeg < 100) print i; ++i '
- Bruke do-while-løkken - I denne sløyfen blir tilstanden utført på slutten av sløyfen, selv om utsagnet er falskt. For eksempel, for å skrive ut tall fra 1 til 100 ved hjelp av en gjør-mens-sløyfe, kan du bruke følgende kode: awk 'BEGIN i = 1; gjør print i; ++ i mens (i < 100) '
- Bruke BEGIN og SLUT - BEGIN-nøkkelordet brukes til å lage en overskrift for behandling av posten din: $ awk 'BEGIN print "XXX"
På samme måte brukes END-nøkkelordet etter behandling av dataene:
SLUT skriv "File footer" '
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 syntes denne artikkelen var interessant, kan du utforske Mastering Linux Shell Scripting - Second Edition. I denne boka vil du oppdage alt du trenger å vite for å mestre skallskripting og ta informerte valg om elementene du bruker.