awk: Dateiinhalt/Variableninhalt als Teil einer if-Anweisung

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Dr_Aleman, 20.01.2011.

  1. #1 Dr_Aleman, 20.01.2011
    Dr_Aleman

    Dr_Aleman Grünschnabel

    Dabei seit:
    20.01.2011
    Beiträge:
    2
    Zustimmungen:
    0
    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
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Dr_Aleman, 20.01.2011
    Dr_Aleman

    Dr_Aleman Grünschnabel

    Dabei seit:
    20.01.2011
    Beiträge:
    2
    Zustimmungen:
    0
    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!
     
Thema:

awk: Dateiinhalt/Variableninhalt als Teil einer if-Anweisung

Die Seite wird geladen...

awk: Dateiinhalt/Variableninhalt als Teil einer if-Anweisung - Ähnliche Themen

  1. IT-Systemadministrator/in in Teilzeit oder freiberuflich

    IT-Systemadministrator/in in Teilzeit oder freiberuflich: Wir suchen ab sofort in Teilzeit (20 Std./Woche) oder freiberuflich eine/n IT-Systemadministrator/in. Ihr Aufgabengebiet: Administration,...
  2. GSoC 2016: Teilnehmer angekündigt

    GSoC 2016: Teilnehmer angekündigt: Der Suchmaschinenbetreiber Google hat die Namen der akzeptierten Teilnehmer bekannt gegeben, die im Rahmen des diesjährigen Summer of Code (GSoC)...
  3. Systemadministrator/ in als Teilzeitstelle

    Systemadministrator/ in als Teilzeitstelle: Systemadministrator/ in als Teilzeitstelle Die DiOmega GmbH ist eine Agentur mit Sitz in Frankfurt am Main, die sich auf IT- und...
  4. Großbritannien fördert Bürgerbeteiligung durch die Initiative »Digital by Default«

    Großbritannien fördert Bürgerbeteiligung durch die Initiative »Digital by Default«: Großbritanniens Government’s Digital Service (GDS) hat 2015 die Initiative »Digital by Default« gestrafft, um Richtlinien zur Erstellung...
  5. EU verteilt Forschungsgelder an Open-Source-Projekte

    EU verteilt Forschungsgelder an Open-Source-Projekte: Der Europäische Forschungsrat (ERC) stattet vier Open-Source-Forschungsprojekte mit Forschungsgeldern aus. Weiterlesen...