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
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