Overzicht
De `print`-instructie in `awk` wordt gebruikt om gegevens die uit invoerrecords (regels) zijn geëxtraheerd, naar de standaarduitvoer te sturen. U kunt gegevens per veld (kolom) selecteren, meerdere velden combineren om af te drukken, en de uitvoer controleren op basis van voorwaarden. `print` is een van de meest basale acties in `awk`-scripts.
Belangrijkste kenmerken
De belangrijkste functies van `awk print` zijn als volgt:
- Volledige regel of specifieke velden afdrukken
- Gebruik van ingebouwde variabelen (NR, NF, FS, RS, etc.)
- Combineren van strings en velden om af te drukken
- Ondersteuning voor voorwaardelijke uitvoer
- Voegt standaard een nieuwe regel toe na elke uitvoer
Gebruiksvoorbeelden
Diverse voorbeelden met behulp van de `print`-instructie van `awk`. We gaan ervan uit dat het voorbeeld bestand `data.txt` er als volgt uitziet: `apple 10 red banana 20 yellow orange 15 orange`
Volledige regel afdrukken
awk '{print}' data.txt
Drukt alle regels van het invoerbestand ongewijzigd af.
Eerste veld afdrukken
awk '{print $1}' data.txt
Drukt alleen het eerste veld ($1) van elke regel af.
Meerdere velden en strings combineren om af te drukken
awk '{print "Item:", $1, "Color:", $3}' data.txt
Drukt het eerste en derde veld af, gescheiden door een komma, en voegt een door de gebruiker gedefinieerde string toe.
Afdrukken wanneer aan specifieke voorwaarden wordt voldaan
awk '$2 > 15 {print}' data.txt
Drukt alleen de regels af waarbij het tweede veld ($2) groter is dan 15.
Laatste veld afdrukken
awk '{print $NF}' data.txt
Drukt alleen het laatste veld ($NF) van elke regel af. NF is een ingebouwde variabele die het totale aantal velden in de huidige regel aangeeft.
Afdrukken na wijzigen van veldscheidingsteken
echo "fruit,100,red\nbanana,200,yellow" | awk -F',' '{print $1, $2}'
Stelt het invoerveldscheidingsteken (-F) in op een komma (,) en drukt het eerste en tweede veld af. (Voorbeeld bestand: `fruit,100,red\nbanana,200,yellow`)
Tips & Aandachtspunten
Tips en aandachtspunten voor het effectiever gebruiken van `awk print`.
Prestatie- en gebruiks-tips
- Gebruik `printf` in plaats van `print`: `printf` kan, vergelijkbaar met C's `printf`, de opmaak nauwkeurig regelen. `print` voegt standaard OFS (Output Field Separator) toe tussen elk argument en OSR (Output Record Separator, standaard een nieuwe regel), maar `printf` vereist dat u de opmaak zelf specificeert.
- Specificeer het veldscheidingsteken (`-F`) duidelijk: Als het veldscheidingsteken van het invoerbestand geen spatie is, moet u de `-F` optie gebruiken om een nauwkeurige veldscheiding te garanderen.
- Beheer complexe logica in `awk` scriptbestanden: Als het script langer wordt, is het beter om het te beheren in een apart bestand met `awk -f script.awk data.txt` voor leesbaarheid en onderhoudbaarheid.
- Gebruik ingebouwde variabelen: Het gebruik van `awk`'s krachtige ingebouwde variabelen zoals `NR` (huidig recordnummer), `NF` (aantal velden in het huidige record), `FS` (invoer veldscheidingsteken), `RS` (invoer record scheidingsteken) maakt flexibelere verwerking mogelijk.