awk: Dateiinhalt/Variableninhalt als Teil einer if-Anweisung

D

Dr_Aleman

Grünschnabel
Hallo
Ich habe folgendes Problem:
Anhand dem Ergebnis einer Datenbankabfrage habe ich mir mit sed usw. einen String gebastelt und in einer Datei gespeichert, der so aussieht:
($3==1 || $3==2 || $3==3 || $3==4)
Jetzt möchte ich mithilfe von nawk diesen String in einer if-Schleife nutzen.
Deswegen habe ich den String einer Variable zugewiesen:
ABC=$(<dir/file)
Soweit klappt alles wunderbar, denn echo $ABC liefert mir den String.
Nur im awk bekomme ich nicht das gewünschte Ergebnis.

Zur Verdeutlichung: Das awk würde statisch (wenn ich es direkt eintippen würde) folgendermaßen aussehen:

nawk '{FS=";";OFS=";"; if ($3==1 || $3==2 || $3==3|| $3==4) {$5=10}; print $0}' dir/datei1.txt > dir/datei2.txt
Erklärung: Wenn in Spalte 3 die Werte 1,2,3 oder 4 vorkommen, dann soll Spalte 5 in den entsprechenden Zeilen den Wert 10 haben.

Statisch klappt das auch und ich krieg das korrekte Ergebnis.

Aber dynamisch (weil die Werte 1,2,3,4 in der Datenbank variieren können) gehts irgendwie nicht. Folgendes wäre dann mein Befehl bzw. meine Idee:

nawk '{FS=";";OFS=";"; if ($ABC) {$5=10}; print $0}' dir/datei1.txt > dir/datei2.txt

Ich hab schon mit allen möglichen Klammern, echo usw. ausprobiert, aber leider "übersetzt" er die Variable $ABC nicht in den "Inhalt" ($3==1 || $3==2 || $3==3 || $3==4)

Kann mir bitte wer helfen und sagen, wieso das nicht geht und wie ich es ändern müsste?

Dankeschön und viele Grüße
 
Hallo,
Ich habe die Antwort mittlerweile gefunden.
Falls das auch mal wer braucht, hier die Lösung:

Code:
nawk '{FS=";";OFS=";"; if ('"$ABC"') {$5=10}; print $0}' dir/file1.txt > dir/file2.txt

Viele Grüße und schönen Tag!
 

Ähnliche Themen

Spalten einer Datei in neue Datei integrieren.

Bestimmte Zeilen einer Spalte addieren

[Gelöst] Suchen und ersetzen mit Hilfe mehrerer Parameter

verzeichniss suche funktioniert nicht

skript zum löschen doppelter dateien

Zurück
Oben