AWK Overzicht
AWK is een acroniem gevormd uit de initialen van de drie ontwikkelaars: A. V. Aho, P. J. Weinberger en B. W. Kernighan. Het is een veelgebruikte datamanipulatietaal in Unix-achtige systemen. Het leest invoer regel voor regel uit bestanden of standaardinvoer en verwerkt gegevens op basis van gespecificeerde patronen en acties.
Hoe AWK werkt
AWK volgt een basisstructuur: `pattern { action }`. Bij het lezen van elke regel, als het `pattern` overeenkomt, wordt de `action` uitgevoerd. Als er geen patroon is, wordt de actie voor elke regel uitgevoerd. Als er geen actie is, worden overeenkomende regels ongewijzigd afgedrukt.
Kenmerken van AWK
- Regel-voor-regel verwerking: Verwerkt invoerbestanden één regel (record) tegelijk.
- Veldniveau toegang: Verdeelt elke regel in velden ($1, $2, ...) gescheiden door witruimte (standaard scheidingsteken) en maakt toegang tot deze velden mogelijk.
- Patroonherkenning: Kan bewerkingen uitvoeren op alleen regels die overeenkomen met een specifiek patroon.
- Programmeerfuncties: Biedt basisprogrammeerfuncties zoals variabelen, voorwaardelijke statements, lussen en functies.
- Rapportgeneratie: Kan eenvoudig complexe opgemaakte tekstrapporten genereren.
Belangrijkste AWK Commando's en Opties
Verwerk tekstgegevens nauwkeurig met behulp van de verschillende opties, ingebouwde variabelen en speciale patronen van AWK.
1. Basisgebruik en Invoer/Uitvoer Opties
2. Ingebouwde Variabelen
3. Speciale Patronen
Gegenereerde opdracht:
Probeer de opdrachtcombinaties.
Uitleg:
`awk` Voer het commando uit.
Combineer deze opties en voer de opdracht virtueel uit met de AI.
Gebruiksvoorbeelden
Ervaar de magie van tekstgegevensverwerking door middel van verschillende voorbeelden van AWK-commandogebruik.
Alleen de tweede kolom uit een bestand afdrukken
awk '{print $2}' data.txt
Extraheert en drukt alleen het tweede veld (kolom) van elke regel af uit het bestand `data.txt`. (Standaard scheidingsteken: spatie)
Specifieke kolommen uit een CSV-bestand afdrukken
awk -F',' '{print "Naam: " $1 ", Score: " $3}' scores.csv
Druks de naam (eerste veld) en score (derde veld) af uit het `scores.csv` bestand, dat kommagescheiden (`,`) is.
Alleen regels afdrukken die een specifiek patroon bevatten
awk '/ERROR/{print}' log.txt
Druks alle regels af die de string 'ERROR' bevatten uit het `log.txt` bestand.
Afdrukken met regelnummers
awk '{print NR ": " $0}' names.txt
Druks elke regel van het `names.txt` bestand af, voorafgegaan door het regelnummer.
Waarde van het tweede veld wijzigen in regels waar het eerste veld 'apple' is
awk '$1 == "apple" {$2 = "fruit"; print}' inventory.txt
Zoekt regels in het bestand waar het eerste veld 'apple' is, wijzigt het tweede veld in 'fruit' en drukt vervolgens de hele regel af.
Berichten voor en na bestandsverwerking afdrukken en totale som berekenen
awk 'BEGIN {total = 0; print "Berekening begint!"} {total += $1} END {print "Totaal: " total}' numbers.txt
Telt alle getallen in `numbers.txt` op en drukt berichten af aan het begin en einde. (Gaat ervan uit dat elke regel slechts één getal bevat)