awk(1)
awk(1)
NAMN
awk – mönsterstyrt språk för att söka och bearbeta text
SYNOPS
awk [ -F fs ] [ -v var=val ] [ -f programfil ] [ 'program' ] [ fil ... ]
BESKRIVNING
awk är ett språk som används för att söka igenom och bearbeta textfiler, ofta i form av kolumnbaserade data. awk läser in en fil rad för rad, delar varje rad i fält och matchar rader mot angivna mönster för att därefter utföra angivna åtgärder.
Standardformatet är:
pattern { action }
Där båda delarna är valfria: ett tomt mönster matchar alla rader, en tom åtgärd skriver ut raden.
Varje rad delas automatiskt i fält, där varje fält refereras med $1, $2, ... och hela raden som $0.
Vanliga användningar inkluderar:
- extrahera kolumner från text
- aggregera eller summera värden
- skapa rapporter eller statistik
- modifiera text i strömmar eller filer
FLAGGOR
-F fs
Anger fältavgränsare (field separator). Standard är mellanslag och tab.
-f programfil
Läser AWK-programmet från en fil istället för från kommandoraden.
-v var=val
Tilldelar ett värde till en variabel före bearbetning börjar.
program
Anger själva AWK-programmet som ett strängargument.
fil ...
Lista över filer som ska bearbetas. Om ingen anges används standard input.
EXEMPEL
Skriv ut andra kolumnen i en fil:
awk '{ print $2 }' fil.txt
Summera värden i tredje kolumnen:
awk '{ sum += $3 } END { print sum }' fil.txt
Använd ett kommatecken som fältavgränsare:
awk -F, '{ print $1, $3 }' fil.csv
KOMMANDORADSFLAGGOR
Fältavgränsning & variabel tilldelning
- -F fs / --field-separator=fs – sätt fältavgränsare (FS)
- -v var=val / --assign=var=val – fördefinierar variabel före tolkningsstart
Filinmatning av skript
- -f fil / --file=fil – läs AWK‑kod från fil istället för kommandoraden
- --source=kod – använd inline‑kod; kan kombineras med -f
Kompatibilitet & optimering
- -W compat/--compat eller --traditional – strikt kompatibel med äldre awk
- --posix – strikt POSIX‑läge (begränsade funktioner)
- -O / --optimize – konstantviktsoptimering vid kompilering
Profileringsdumpning
- -W profile[=fil] / --profile[=fil] – genererar körningsprofil i fil (standard `awkprof.out`)
- pgawk – profileringsversion som även räknar statementsvykörningar
Debug & felsökning
- -W lint[=value] / --lint[=value] – varna för osäkra konstruktioner (fatal/invalida med value “fatal” eller “invalid”)
- -W dump-variables[=fil] – dumpa globala variabler och deras värden
Internationellt stöd & hjälpfunktioner
- -W gen-po / --gen-po – generera PO‑fil för lokalisering
- bindtextdomain(), dcgettext(), dcngettext() – dynamisk översättning
Versionsinfo och hjälp
- --version – skriv ut gawk‑version och avsluta
- -W help / --help – skriv ut sammanfattning och avsluta
- -W copyright / --copyleft – GNU‑upphovsrättstext
INBYGGDA FUNKTIONER
Numeriska funktioner
sin(x), cos(x), atan2(y,x), exp(x), log(x), sqrt(x), int(x), rand(), srand([x])
Strängfunktioner
length([s]), substr(s, i [, n]), index(s, t), match(s, r), split(s, a [, fs]), sub(r, t [, s]), gsub(r, t [, s]), tolower(s), toupper(s), sprintf(fmt, vals)
Tidsfunktioner (GNU)
systime(), strftime([format [, ts]]), mktime("YYYY MM DD HH MM SS [DST]")
ARRAYER
AWK har associativa arrayer med strängindex. Exempel:
a["namn"] = 42 print a["namn"]
För loop:
for (i in a) print i, a[i]
Radera nyckel:
delete a["namn"]
Multidimensionellt:
count[x "," y]++
eller med GNU:
@count[x][y]++
REGEX
- `~`, `!~`, `match()`, `sub()`, `gsub()`
- Variabelmatchning:
r = "^[0-9]+$" if ($1 ~ r) ...
INTERNATIONELLISERING
bindtextdomain(), dcgettext(), dcngettext()
FELHANTERING
- `-W lint`, `-W profile`, `print "DEBUG:", variabel`
AVANCERADE EXEMPEL
CSV till HTML:
BEGIN { print "<table>" } { print "<tr>"; for(i=1;i<=NF;i++) printf "<td>%s</td>",$i; print "</tr>" } END { print "</table>" }
KOMPATIBILITET
POSIX vs GNU-funktioner. Undvik GNU-specifikt vid portabilitet.
SE ÄVEN
gawk(1), sed(1), grep(1), bash(1), xargs(1)
FÖRFATTARE
Aho, Kernighan, Weinberger (AWK); Robbins (GNU awk)
COLOPHON
Denna svenska översättning är baserad på den engelska manualsidan för `awk(1)` tillgänglig från https://linux.die.net/man/1/awk och officiella GNU `gawk`-källor. Översatt av Martin.
Sidslut
Orginalhemsidan på Engelska https://linux.die.net/man/1/awk
Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
Tack till Datorhjälp hemma som har sponsrat Linux.se med webbhotell.