programmera.net -> linux -> normal för utskrift | info@programmera.net |
AWK
1. Om AWK 2. Att köra AWK 3. Enkelt AWK program 4. Exempel på körbart program 5. Olika sätt att separera kolumnerna |
1. Om AWK
Denna sida beskriver hur du skriver program i AWK. AWK är ett enkelt programmeringsspråk som används för att behandla filer med sorterat innehåll. Om du har en textfil med t.ex. tab-separerade kolumner innehållande data av olika typ som du vill behandla på något sätt passar ofta AWK bra till detta.
Ett AWK-program består av en lista med regler där varje regel består av ett pattern och en action enligt:
pattern { action }
pattern { action }
...
2. Att köra AWK
För små AWK-program är det enklast att skriva in "programmet" direkt i AWK-anropet, se nedan:
Om du vill applicera AWK-programmet på standard input istället för på en fil så skriver man på klassiskt UNIX-sätt:
[olle@dev1]$ awk 'program' input-file1 input-file2 ...
Här tolkas alla inkommande rader som på samma sätt som raderna i en fil.
För längre program ligger programmet i en speciell fil som man pekare ut med -f flaggen, se nedan:
[olle@dev1]$ some_program | awk 'program'
Om du vill skapa en körbart program kan du lägga följande i början av filen "#! /bin/awk -f", se nedan:
[olle@dev1]$ awk -f program-file input-file1 input-file2 ...
#! /bin/awk -f
... program ...
3. Enkelt AWK program
Om jag har följande innehåll i den mapp jag står i:
Så kan jag använda AWK för att behandla detta innehåll. I programmet nedan väljer jag ut alla rader som innehåller strängen "bi":
[olle@dev1]$ ls -l
totalt 56
drwxr-xr-x 2 olle olle 4096 2007-11-17 14:21 bin
drwxr-xr-x 2 olle olle 4096 2007-10-04 21:07 client
drwxr-xr-x 7 olle olle 4096 2007-10-04 21:07 docs
-rw-r--r-- 1 olle olle 23121 2007-10-04 21:07 InstallConfigRecord.xml
-rw-r--r-- 1 olle olle 1250 2007-10-04 21:07 InstallSummary.html
drwxr-xr-x 3 olle olle 4096 2007-10-04 21:07 lib
drwxr-xr-x 2 olle olle 4096 2007-10-04 21:07 scripts
drwxr-xr-x 3 olle olle 4096 2007-10-04 21:07 server
drwxr-xr-x 2 olle olle 4096 2007-10-04 21:07 Uninstaller
Det vi har gjort är att simulera anropet "grep bi".
Om vi vill ha ytterligare funktionalitet i vår regel kan vi lägga till denna inom måsvingar:
[olle@dev1]$ ls -l | awk '/bi/'
drwxr-xr-x 2 olle olle 4096 2007-11-17 14:21 bin
Nu börjar vi förstå vad AWK ska användas till, nämligen bearbeta enskilda kolumner i textfiler.
[olle@dev1]$ ls -l | awk '/bi/ { print "file " $8 " has size: " $5 } '
file bin has size: 4096
4. Exempel på körbart program
Vi kan spara detta program i en körbar fil olles_grep med följande innehåll:
När vi kör olles_grep ser det ut på detta sätt:
#! /bin/awk -f
/bi/
[olle@dev1]$ ls -l | ./olles_grep
drwxr-xr-x 2 olle olle 4096 2007-11-17 14:21 bin