Datum: 2004-02-11
Quelle: suse-linux
In einer CSV-Datei soll das 5. Feld ersetzt werden, wenn es den Wert "error" hat.
echo 'myKey1234;bdfgfgf;ahfdhads;usdufa;error;adjsflkjafadsf;error myKey1235;bdfgfgf;ahfdhads;usdufa;success;adjsflkjafadsf;error' | \ awk -F';' ' $5 == "error" { for (i=1; i<5; i++) printf "%s;", $i; printf "ABC;"; for (i=6; i<=NF; i++) printf "%s;", $i; printf "\n"; getline; } { print $0; } ' # Ausgabe / output: myKey1234;bdfgfgf;ahfdhads;usdufa;ABC;adjsflkjafadsf;error myKey1235;bdfgfgf;ahfdhads;usdufa;success;adjsflkjafadsf;error
Ich habe die Datei zur Demonstration weggelassen und füttere den awk mit einer zweizeiligen Eingabe aus einem echo. Innerhalb des awk-Scripts wird zuerst der Fall bearbeitet, dass das 5. Feld den Wert "error" hat. In diesem Fall werden zuerst die Felder 1 bis 4 unverändert ausgegeben, dann der Austauschwert für Feld 5 und dann die noch folgenden Felder bis zum Zeilenende. Die letzte Zeile gibt die Eingabezeilen, für die die Bedingung nicht zutrifft, unverändert aus.