|
Einführung, Tutorial und ReferenzAwk |
Jede zweite Zeile, gerade FelderIn der Praxis kommt es häufig vor, dass man die geraden oder ungeraden Zeilen einer Datei ausgeben bzw. zur Weiterverarbeitung ansprechen will.Dazu genügt ein erstaunlich kurzes Skript: Für die Ausgabe der Zielennummern mit geradem Index (Achtung: Zählung beginnt bei 0): awk 'NR%2' DateinameFür die Ausgabe der Zielennummern mit ungeradem Index: awk '(NR+1)%2' DateinameEinem Anfänger mit AWK fällt wohl folgende auch funktionierende aber weniger elegante Lösung zuerst ein:
awk 'NR % 2 == 0 { print }' FILENAME
Wie sieht es aber aus, wenn man nur die geraden Feldelemente einer Zeile
ausgeben will. Das folgende Skript löst dieses Problem. NF ist eine
Systemvariable, die die Anzahl der Feldelemente enthält. Man beachte
auch, dass die Zählung der Feldelemente mit 1 beginnt, also $1, $2,
$3, ..:
{
(NR+1)%2
for (i=1; i<=NF; i++) {
if (i%2) printf $i" ";
}
printf "\n"
}
|
© Copyright 2004 - 2008, Bodenseo, Linux-Kurse am Bodensee, Bernd Klein