Sådan skriver du AWK-kommandoer og scripts
Kommandoen awk er en kraftfuld metode til at behandle eller analysere tekstfiler. Det analyserer især datafiler, der er organiseret efter linjer (rækker) og kolonner. Simple awk-kommandoer kan køres fra kommandolinje. Mere komplekse opgaver bør skrives som awk-programmer (kaldet awk-scripts) til en fil.

Grundlæggende om AWK
Det grundlæggende format for en awk-kommando ser sådan ud:
awk 'mønster {action}' input-fil > output-fil
Det betyder: Tag hver linje i inputfilen; hvis linjen indeholder mønsteret, skal du anvende handlingen på linjen og skrive den resulterende linje til outputfilen. Hvis mønsteret udelades, anvendes handlingen på alle linjer. For eksempel:
awk '{ print $5 }' tabel1.txt > output1.txt
Ovenstående sætning tager elementet i den 5. kolonne i hver linje og skriver det som en linje i outputfilen "output.txt." Variablen '$4' refererer til den fjerde kolonne. På samme måde kan du få adgang til den første, anden og tredje kolonne med $1, $2, $3 osv. Som standard antages kolonner at være adskilt af mellemrum eller tabulatorer (såkaldt hvidt mellemrum). Så hvis inputfilen "table1.txt" indeholder disse linjer:
1, Justin Timberlake, titel 545, pris $7,30
2, Taylor Swift, titel 723, pris $7,90
3, Mick Jagger, titel 610, pris $7,90
4, Lady Gaga, titel 118, pris $7,30
5, Johnny Cash, titel 482, pris $6,50
6, Elvis Presley, titel 335, pris $7,30
7, John Lennon, titel 271, pris $7,90
8, Michael Jackson, titel 373, pris $5,50
Så ville kommandoen skrive følgende linjer til outputfilen "output1.txt":
545,
723,
610,
118,
482,
335,
271,
373,
Hvis kolonneseparatoren er noget andet end mellemrum eller tabulatorer, såsom et komma, kan du angive det i awk-sætningen som følger:
awk -F, '{ print $3 }' tabel1.txt > output1.txt
Dette vil vælge elementet fra kolonne 3 på hver linje, hvis kolonnerne anses for at være adskilt af et komma. Derfor ville outputtet i dette tilfælde være:
Titel 545
Titel 723
Titel 610
Titel 118
Titel 482
Titel 335
Titel 271
Titel 373
Betingede udtryk i AWK
Listen over udsagn inden for de krøllede parenteser ('{','}') kaldes en blok. Hvis du sætter en betinget udtryk foran en blok vil sætningen inde i blokken kun blive udført, hvis betingelsen er sand.
awk '$7=="\$7.30" { print $3 }' tabel1.txt
I dette tilfælde er betingelsen $7=="\$7,30", hvilket betyder, at elementet i kolonne 7 er lig med $7,30. Omvendt skråstreg foran dollartegnet bruges til at forhindre systemet i at fortolke $7 som en variabel og i stedet tage dollartegnet bogstaveligt.
Så denne awk-sætning udskriver elementet i den tredje kolonne i hver linje, der har en "$7,30" i kolonne 7.
Du kan også bruge regulære udtryk som betingelse. For eksempel:
awk '/30/ { print $3 }' tabel1.txt
Strengen mellem de to skråstreger ('/') er det regulære udtryk. I dette tilfælde er det kun strengen "30". Dette betyder, at hvis en linje indeholder strengen "30", udskriver systemet elementet i den 3. kolonne på den linje. Det produktion i ovenstående eksempel ville være:
Timberlake,
Gaga,
Presley,
Udfør beregninger i AWK
Hvis tabelelementerne er tal, kan awk køre beregninger på dem som i dette eksempel:
awk '{ print ($2 * $3) + $7 }'
Udover de variable, der tilgår elementer i den aktuelle række ($1, $2, osv.), er der variablen $0, som refererer til hele rækken (linien), og variablen NF, der holder til antallet af felter.
Du kan også definere nye variable som i dette eksempel:
awk '{ sum=0; for (kol = 1; col<=NF; col++) sum += $col; print sum; }'
Dette beregner og udskriver summen af alle elementerne i hver række.
Awk-udsagn kombineres ofte med sed-kommandoer.