awk(1): Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
(Skapade sidan med ' = awk(1) = == NAMN == '''awk''' – mönsterstyrt språk för att söka och bearbeta text == SYNOPS == <pre> awk [ -F fs ] [ -v var=val ] [ -f programfil ] [ 'program' ] [ fil ... ] </pre> == 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ärde...')
 
Ingen redigeringssammanfattning
Rad 60: Rad 60:
awk -F, '{ print $1, $3 }' fil.csv
awk -F, '{ print $1, $3 }' fil.csv
</pre>
</pre>
== KOMMANDORADSFLAGGOR ==
=== Fältavgränsning & variabel tilldelning === 
* '''-F fs''' / '''--field-separator=fs''' – sätt fältavgränsare (FS)<br>
* '''-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 ===
<pre>
sin(x), cos(x), atan2(y,x), exp(x), log(x), sqrt(x), int(x),
rand(), srand([x])
</pre>
=== Strängfunktioner ===
<pre>
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)
</pre>
=== Tidsfunktioner (GNU) ===
<pre>
systime(), strftime([format [, ts]]), mktime("YYYY MM DD HH MM SS [DST]")
</pre>
== ARRAYER ==
AWK har associativa arrayer med strängindex. Exempel:
<pre>
a["namn"] = 42
print a["namn"]
</pre>
För loop:
<pre>
for (i in a) print i, a[i]
</pre>
Radera nyckel:
<pre>
delete a["namn"]
</pre>
Multidimensionellt:
<pre>
count[x "," y]++
</pre>
eller med GNU:
<pre>
@count[x][y]++
</pre>
== REGEX ==
* `~`, `!~`, `match()`, `sub()`, `gsub()`
* Variabelmatchning:
<pre>
r = "^[0-9]+$"
if ($1 ~ r) ...
</pre>
== INTERNATIONELLISERING ==
<pre>
bindtextdomain(), dcgettext(), dcngettext()
</pre>
== FELHANTERING ==
* `-W lint`, `-W profile`, `print "DEBUG:", variabel`
== AVANCERADE EXEMPEL ==
CSV till HTML:
<pre>
BEGIN { print "<table>" }
{ print "<tr>"; for(i=1;i<=NF;i++) printf "<td>%s</td>",$i; print "</tr>" }
END { print "</table>" }
</pre>
== KOMPATIBILITET ==
POSIX vs GNU-funktioner. Undvik GNU-specifikt vid portabilitet.


== SE ÄVEN ==
== SE ÄVEN ==
[[gawk(1)]], [[sed(1)]], [[grep(1)]]
[[gawk(1)]], [[sed(1)]], [[grep(1)]], [[bash(1)]], [[xargs(1)]]


== FÖRFATTARE ==
== FÖRFATTARE ==
Alfred V. Aho, Brian W. Kernighan och Peter J. Weinberger. GNU-versionen är underhålls av Free Software Foundation.
Aho, Kernighan, Weinberger (AWK); Robbins (GNU awk)


== COLOPHON ==
== COLOPHON ==
Denna manualsida översattes till svenska av Martin. Ursprunglig version tillgänglig via https://linux.die.net/man/1/awk.
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.
 
[...TRUNCATED FOR BREVITY... see next code block for full content]

Versionen från 12 juni 2025 kl. 05.36

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.