awk(1): Skillnad mellan sidversioner
Admin (diskussion | bidrag) (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...') |
Admin (diskussion | bidrag) 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 == | ||
Aho, Kernighan, Weinberger (AWK); Robbins (GNU awk) | |||
== COLOPHON == | == COLOPHON == | ||
Denna | 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. | ||
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.