The awk-kommandoen er en kraftig metode for behandling eller analyse av tekstfiler, spesielt datafiler som er organisert av linjer (rader) og kolonner.
Enkel awk Kommandoer kan kjøres fra kommandolinjen. Mer komplekse oppgaver skal skrives som awk-programmer (såkalte awk-skript) til en fil.
Det grunnleggende formatet til en awk-kommando ser slik ut:
awk 'pattern {action}' input-fil> output-fil
Dette betyr: ta hver linje i inngangsfilen; Hvis linjen inneholder mønsteret, bruk handlingen til linjen og skriv den resulterende linjen til utdatafilen. Hvis mønsteret utelates, blir handlingen påført hele linjen. For eksempel: awk '{skriv ut $ 5}' table1.txt> output1.txt Denne setningen tar elementet i den femte kolonnen i hver linje og skriver det som en linje i utdatafilen "output.txt". Variabelen '$ 4' refererer til den andre kolonnen. På samme måte kan du få tilgang til første, andre og tredje kolonne, med $ 1, $ 2, $ 3, osv. Som standard antas kolonner å være adskilt av mellomrom eller faner (såkalt hvit plass). Så, hvis inngangsfilen "table1.txt" inneholder disse linjene: 1, Justin Timberlake, Tittel 545, Pris $ 7,302, Taylor Swift, Tittel 723, Pris $ 7,903, Mick Jagger, Tittel 610, Pris $ 7,904, Lady Gaga, Tittel 118, Pris $ 7,305, Johnny Cash, Tittel 482, Pris $ 6.506, Elvis Presley, Tittel 335, Pris $ 7,307, John Lennon, tittel 271, pris $ 7,908, Michael Jackson, Tittel 373, Pris $ 5,50 Da ville kommandoen skrive følgende linjer til utdatafilen "output1.txt": 545,723,610,118,482,335,271,373, Hvis kolonneparatoren er noe annet enn mellomrom eller faner, for eksempel et komma, kan du spesifisere det i awk-setningen som følger: awk -F, '{print $ 3}' table1.txt> output1.txt Dette vil velge elementet fra kolonne 3 i hver linje hvis kolonnene anses å være atskilt med et komma. Derfor vil utgangen, i dette tilfellet, være: Tittel 545 Tittel 723 Tittel 610 Tittel 118 Tittel 482 Tittel 335 Tittel 271 Tittel 373 Listen over uttalelser i de krøllete parentesene ('{', '}') kalles en blokk. Hvis du legger et betinget uttrykk foran en blokk, blir setningen i blokken bare utført hvis tilstanden er sant. awk '$ 7 == " $ 7.30" {print $ 3}' table1.txt I dette tilfellet er tilstanden $ 7 == " $ 7.30", noe som betyr at elementet i kolonne 7 er lik $ 7,30. Bakslaget foran dollarskiltet brukes til å forhindre at systemet tolker $ 7 som en variabel og i stedet tar dollartegnet bokstavelig talt. Så dette akke utsagnet skriver ut elementet i den tredje kolonnen av hver linje som har en "$ 7.30" i kolonne 7. Du kan også bruke vanlige uttrykk som tilstanden. For eksempel: awk '/ 30 / {print $ 3}' table1.txt Strengen mellom de to skråstrekkene ('/') er det vanlige uttrykket. I dette tilfellet er det bare strengen "30." Dette betyr at hvis en linje inneholder strengen "30", skriver systemet ut elementet i den tredje kolonnen på linjen. Utgangen i eksempelet ovenfor ville være: Timberlake, Gaga, Presley, Hvis tabellelementene er tall awk kan kjøre beregninger på dem som i dette eksempelet: awk '{print ($ 2 * $ 3) + $ 7}' Foruten variablene som aksesserer elementer av den nåværende raden ($ 1, $ 2, etc.) er variabelen $ 0 som refererer til hele rad (linje) og variabelen NF som holder til antall felt. Du kan også definere nye variabler som i dette eksemplet: awk '{sum = 0; for (kol = 1; kol <= NF; col ++) sum + = $ col; utskrift sum; }' Dette beregner og skriver ut summen av alle elementene i hver rad. AWK-setninger blir ofte kombinert med sed-kommandoer.