Startpagina > Tekstverwerking en zoeken > awk

awk Snelle Gids

Een stroomverwerkingstool die tekststromen per record en veld verwerkt om te filteren, transformeren en aggregeren. Dit omvat algemene opties en typische patronen gebaseerd op GNU awk (gawk).

Overzicht

Awk leest invoer als records (standaard: regels), splitst deze met een veldscheidingsteken (FS) en past vervolgens patroon/actie { ... } blokken toe om de gewenste uitvoer (OFS) te produceren. Veelvoorkomende toepassingen zijn het extraheren van kolommen, voorwaardelijk filteren, berekenen van sommen/gemiddelden en het converteren van formaten.

Belangrijke ingebouwde variabelen

Dit zijn de belangrijkste ingebouwde variabelen die invoer/uitvoergedrag en opmaak regelen.

  • NR: Record (regel) nummer gelezen tot nu toe
  • FNR: Recordnummer in het huidige bestand
  • NF: Aantal velden in het huidige record
  • FS: Invoer veldscheidingsteken (standaard spatie)
  • OFS: Uitvoer veldscheidingsteken (standaard spatie)
  • RS: Record scheidingsteken (standaard newline)
  • ORS: Uitvoer record scheidingsteken (standaard newline)

Basisvorm

awk '패턴 { 액션 }' input.txt
awk -f program.awk input.txt

Geef het patroon/actieblok op één regel door, of geef een scriptbestand door met -f.

Belangrijke opties

Veelgebruikte opties in de praktijk, gegroepeerd per situatie. Inclusief gawk-compatibele opties.

1) Basisuitvoering/Invoer

2) Veld-/Variabeleoverdracht

3) Debugging/Compatibiliteit (gawk)

4) Help/Versie

Gegenereerde opdracht:

Probeer de opdrachtcombinaties.

Uitleg:

`awk` Voer het commando uit.

Combineer deze opties en voer de opdracht virtueel uit met de AI.

Veelgebruikte patronen

Kolommen extraheren

awk -F ':' '{ print $1, $3 }' /etc/passwd

Alleen het 1e en 3e veld, gescheiden door een dubbele punt, uitvoeren

Voorwaardelijk filteren

awk '$5 > 100 { print }' data.tsv

Alleen records uitvoeren waarvan de waarde van het 5e veld groter is dan 100

Aggregatievoorbeeld

awk '{ sum += $2 } END { print sum }' data.txt

Som van de tweede kolom

Variabeleoverdracht en opmaak

awk -v OFS=',' '$1=="KEY" { print $1, $2, $3 }' input.txt

Stel OFS in op een komma en geef alleen specifieke sleutels weer

Praktische tips

Omdat het een regel-voor-regel stroomverwerking is, is de combinatie met pipes krachtig.

  • Reguliere expressies kunnen worden gebruikt als veldscheidingsteken: -F '[,:\t]+'
  • Programma's kunnen in delen worden geschreven met meerdere -e opties
  • Lange scripts splitsen met -f en versiebeheer met Git
  • Pas OFS/ORS dienovereenkomstig aan voor de uitvoeropmaak
  • Voor grote invoer, vereenvoudig de pijplijn door alleen de minimaal benodigde taken te behouden

gerelateerde commando's

Functional vergelijkbare of vaak samen gebruikte commando's.



Hétzelfde categoriecommando