awk(1)

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök

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.