Å vite det essensielle i "awk" -kommandoen er veldig viktig når det gjelder å behandle data effektivt, og dette innlegget dekker nøkkelegenskapene i "awk" -kommandoen. La oss sjekke syntaksen først:
$ awk [opsjoner] [fil]Noen av de mest brukte alternativene er gitt i tabellen nedenfor:
Alternativ | Beskrivelse |
-F | Å spesifisere en filskiller |
-f | Spesifiser filen som inneholder "awk" -skriptet |
-v | Å tilordne variabel |
La oss ta en titt på noen eksempler om bruken av "awk" -kommandoen, og for demonstrasjon har jeg laget en tekstfil med navnet testFile.tekst:
1. Hvordan skrive ut en kolonne av en fil med kommandoen awk?
Kommandoen "awk" kan brukes til å hente en bestemt kolonne i tekstfilen. Slik skriver du ut innholdet i filbruken:
$ cat testFile.tekst
Nå, for å skrive ut den andre kolonnen i filen, bruk:
$ awk 'print $ 2' testFile.tekst
For å skrive ut mer enn ett felt, bruk kommandoen:
$ awk 'print $ 1, $ 2, $ 3' testFile.tekst
Hvis du ikke bruker kommaet “,” vil utdataene være uten mellomrom:
$ awk 'print $ 1 $ 2 $ 3' testFile.tekst
2. Slik bruker du vanlig uttrykk med awk-kommando:
For å matche strengene eller et hvilket som helst uttrykk, bruker vi skråstreker "//", hvis du for eksempel vil skrive ut navnene på folk som studerer "Historie", og deretter bruke:
$ awk '/ History / print $ 2' testFile.tekst
Resultatet viser tydelig at bare "Sam" og "Tommy" studerer "Historie" -kurset.
3. Hvordan bruke relasjonsuttrykket med kommandoen "awk":
For å matche innholdet i et bestemt felt, kan relasjonsuttrykk brukes. For å matche hvilken som helst streng eller et uttrykk mot et felt, angir du feltet og bruker sammenligningsoperatøren ~ ~ med mønsteret som vist i følgende kommando:
$ awk '$ 3 ~ / is / print $ 2' testFile.tekst
Ovennevnte utgang viser hvert felt i kolonne 2 mot hvert felt som inneholder “er” i kolonne 3.
Og for å få motsatt utdata fra kommandoen ovenfor, bruk “! ~ ”Operatør:
$ awk $ 3! ~ / is / print $ 2 'testFile.tekst
Til sammenligning kan vi også bruke operatører som større enn “>” og mindre enn “<” and equal “=” as well:
$ awk '$ 4> 70 print $ 2' testFile.tekst
Produksjonen har skrevet ut navnene på personer som fikk merker på mer enn 70.
4. Hvordan bruke rekkeviddemønster med awk-kommando:
Et utvalg kan også brukes til søk; bruk bare kommaet "," for å skille området som presenteres i kommandoen nedenfor:
$ awk '/ Joel /, / Marlene / print $ 3' testFile.tekst
Utgangen viser emnene i området fra “Joel” til “Marlene” fra kolonne 2. Vi kan bruke det doble likhetstegnet “==” for å definere et område; se eksemplet nedenfor:
$ awk '$ 4 == 80, $ 4 == 90 print $ 0' testFile.tekst
Utgangen viser navnene på personene fra kolonne 2 for rekkevidden til merkene “70 til 80” fra kolonne 4.
5. Hvordan kombinere mønster ved hjelp av logisk operator:
Bruken av logiske operatorer som ELLER “||”, OG “&&” lar deg kombinere mønstre for søk. Bruk følgende kommando
$ awk '$ 4> 80 && $ 6> 0.4 print $ 2 'testFile.tekst
Ovennevnte kommando skriver ut personnavn mot det fjerde feltet som er mer signifikant enn 80 og det sjette feltet som er større enn 0.4. Og bare to poster oppfyller betingelsen.
6. The awk kommandoen spesielle uttrykk:
Det er to spesielle uttrykk, “BEGYNNE”Og”SLUTT”:
BEGIN: Å utføre en handling før data blir behandlet
SLUTT: For å utføre en handling etter at dataene er behandlet
$ awk 'BEGIN print “Processing has started”; skriv ut $ 2; END utskrift “Behandlingen er avsluttet” 'testFile.tekst
7. Den nyttige innebygde variabelen for awk-kommando:
Kommandoen awk har forskjellige variabler som hjelper til med databehandling:
Variabel | Beskrivelse |
NF | Det gir antall felt i dataene |
NR | Det gir nummeret til gjeldende rekord |
FILNAVN | Viser navnet på filen som behandles for øyeblikket |
FS og OFS | Feltutskiller og utgangsfeltutskiller |
RS og ORS | Separerer posten og Output Record Separator |
For eksempel:
$ awk 'END print "Filnavnet er" FILENAME "har" NF "felt og" NR "poster"' testFile.tekst
Vi bruker “END”, men hvis du bruker “BEGIN”, vil utdataene gi 0 felt og 0 poster.
8. Slik endrer du plateskilleren:
Standard separator i posten er vanligvis mellomrom; hvis det er komma "," eller ".”Som feltseparator, og bruk deretter“ FS ”-alternativet sammen med separatoren.
La oss ha en annen fil der datafelt er atskilt med komma-kolon ":":
$ cat testFile2.tekst$ awk 'BEGIN FS = “:” print $ 2' testFile2.tekst
Siden filens skilletegn er et kolon, men kommandoen “awk” til og med fordelaktig for filene som dette, bruker du bare “FS” -alternativet.
“-F” kan også brukes:
$ awk -F “:” 'print $ 2' testFile2.tekst
Standard plateutskiller er "newline", og for å sette plateseparatoren til ":", bruk:
$ awk 'BEGIN RS = “:” print $ 1' testFile2.tekst
9. Awk-handlinger:
Awk-handlinger er små programmer som er omgitt av "" parenteser og har mer enn ett utsagn atskilt med semikolon ";".
Den mest brukte setningen med "awk" -kommandoen er "print" -uttalelsen. For eksempel, for å skrive ut en tekst med hver post, bruk tekststreng i anførselstegn:
$ awk '"Det er et felt," $ 2' testfil.tekst
La oss utføre en enkel sumoperasjon ved hjelp av awk:
$ awk 'sum + = $ 4 END printf “% d \ n”, sum' testFile.tekst
10. Opprette et awk-program:
La oss begynne med “awk” -programmeringen, programmeringen nedenfor gjør ganske enkelt multiplikasjon:
BEGYNNEjeg = 2
mens (j<4)
skriv ut “Multiplikasjonen av 2 med” j “er” i * j;
j++
Lagre programmet med navnet “myCode.kjipt”Og for å kjøre den, åpne terminalen og skriv:
$ awk -f myCode.kjiptKonklusjon:
Kommandoen "awk" er en praktisk kommando for å behandle, skanne data for tekstfiler, for eksempel å skille et bestemt felt i en fil; vi bruker kommandoen “awk”. Det gjør det lettere å søke hva som helst i hvilken som helst form eller mønster fra tekstfilene. I denne guiden forstår vi det grunnleggende i “awk” -kommandoen og bruken av den. Kommandoen "awk" validerer data, genererer rapporter og til og med analyserer filer. Ved å bruke enkle kommandoer "awk" kan brukerne også skrive små programmer for å behandle data mer effektivt.