mit sed aus Array lesen..

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von tanita, 23.05.2007.

  1. #1 tanita, 23.05.2007
    Zuletzt bearbeitet: 23.05.2007
    tanita

    tanita Grünschnabel

    Dabei seit:
    23.05.2007
    Beiträge:
    2
    Zustimmungen:
    0
    Hallo,

    bin neu hier, erstmal Servus! :)

    Folgendes, ich möchte in einem Shell-Skript die Variable 'pattern auslesen und verändern.. :hilfe2:


    In einer Datei file.txt hab ich folgendes definiert:
    Code:
    1,$s/ö/oe/g
    1,$s/Ö/oe/g
    1,$s/ä/ae/g
    1,$s/Ä/ae/g
    1,$s/ü/ue/g
    1,$s/Ü/ue/g
    1,$s/ß/ss/g
    und rufe es so auf:
    Code:
    pattern=`echo $zeile |awk -F\; '{printf("%s.%s", $4, $3)}' |sed -f filter.txt`
    oder so:

    Code:
    pattern=`echo $zeile |awk -F; '{printf("%s.%s", $4, $3)}' |sed 's/ö/oe/g'`
    funkt :]


    Jetzt wollte ich es innerhalb des Skriptes mitels Variable oder Array erledigen, z.B. so:

    Code:
    FILTER="s/ö/oe/g s/Ö/oe/g s/ä/ae/g s/Ä/ae/g s/ü/ue/g s/Ü/ue/g s/ß/ss/g"
    
    pattern=`echo $zeile |awk -F; '{printf("%s.%s", $4, $3)}' | for X in $FILTER; do sed $X; done;`
    so

    Code:
    pattern=`echo $zeile |awk -F\; '{printf("%s.%s", $4, $3)}' | sed -e 's/ö/oe/g' |sed -e 's/Ö/oe/g' -e ' s/ä/ae/g' -e 's/Ä/ae/g' -e 's/ü/ue/g' -e 's/Ü/ue/g' -e 's/ß/ss/g'`
    
    oder so:
    Code:
    pattern=`echo $zeile |awk -F\; '{printf("%s.%s", $4, $3)}' | sed -e 's/ö/oe/g' |sed -e 's/Ö/oe/g'|sed -e ' s/ä/ae/g'|sed -e 's/Ä/ae/g'|sed -e 's/ü/ue/g'|sed -e 's/Ü/ue/g'|sed -e 's/ß/ss/g'`
    
    geht auch nicht..

    any help?

    THX,
    Gruß T.


    edith: sorry, geht hatte noch eine falsche Zeile auskommentiert.. :erschlag:
    Code:
    pattern=`echo $zeile |awk -F\; '{printf("%s.%s", $4, $3)}' | for X in $FILTER; do sed -e $X; done;`
    
    der output war als letztes..

    Trotzdem, ginge sowas z.B. aus einem Array zu lesen?
     
  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 Wolfgang, 23.05.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Wenn du das als Array definierst und behandelst:
    Code:
    $ bash -version
    GNU bash, version 3.1.17(1)-release (i486-pc-linux-gnu)
    Copyright (C) 2005 Free Software Foundation, Inc.
    
    $ X=(s/A/a/g s/B/b/g s/C/c/g);for e in ${X[*]}; do echo ABCD|sed -e $e;done
    aBCD
    AbCD
    ABcD
    
    Gruß Wolfgang
     
  4. #3 tanita, 23.05.2007
    Zuletzt bearbeitet: 23.05.2007
    tanita

    tanita Grünschnabel

    Dabei seit:
    23.05.2007
    Beiträge:
    2
    Zustimmungen:
    0
    Hallo Wolfgang,

    so konnte ich das Array auch auslesen. Ich wollte es jedoch an dieser Stelle auslesen:
    Code:
    pattern=`echo $zeile |awk -F; '{printf("%s.%s", $4, $3)}' | for X in $FILTER; do sed $X; done;`
    Habe mittlerweile gelernt, dass das nicht geht, weil sed die Kommandos in mehreren Zeilen braucht.. wie auch immer das zu verstehen ist, nach dem pipe wird jedenfalls nur die erste Expression verarbeitet.

    D.h. so wie oben in den letzten beiden Beispielen beschrieben.. oder so:
    Code:
    echo $zeile |awk -F\; '{printf("%s.%s", $4, $3)}' | \
            sed -e 's/ö/oe/g'
                      's/Ö/oe/g'
                             .
                             .
                             .
                      's/ß/ss/g'
    Aber danke,
    Servus T.
     
  5. #4 Wolfgang, 24.05.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Na dann nutze es als String.
    Etwa so:
    Code:
    $ X="s/A/a/g;s/B/b/g;s/C/c/g";echo ABCD|sed -e $X
    abcD
    
    Hoffe mal du nutzt GNU sed, da du weder OS noch deine Bash erwähnt hast.

    Gruß Wolfgang
     
  6. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

mit sed aus Array lesen..

Die Seite wird geladen...

mit sed aus Array lesen.. - Ähnliche Themen

  1. QT: QByteArray auslesen und in allozierten Speicher schreiben

    QT: QByteArray auslesen und in allozierten Speicher schreiben: Hi@all Ich bin im Praktikum und habe dort eine Aufgabe ,ich beschäftige mich dort mit C++ und Qt. Eigendlich läuft soweit alles gut aber an...
  2. zugriff auf array (ein-und auslesen) awk

    zugriff auf array (ein-und auslesen) awk: Hallo, ich habe mich mal ein wenig mit awk beschäftigt... Ausgangsbasis, es liegt eine textdatei vor die folgendermaßen aufgebaut ist:...
  3. CSV Datei in Array einlesen

    CSV Datei in Array einlesen: Hallo, ich habe eine CSV Datei folgender Gestalt: 21022009 root du-h 22022009 user1 ls(zugegeben: ein bisschen länger und mehr Spalten.) Das...
  4. [bash] nicht alle array werte werden eingelesen

    [bash] nicht alle array werte werden eingelesen: Hi, ich habe folgendes Problem ich habe ein array mit 29 Elemnten definiert. Wenn ich mir nun aber echo ${#array} ausgeben lasse, kommt er nur...
  5. Zahlenwerte von Datei in 2Dim-Array lesen

    Zahlenwerte von Datei in 2Dim-Array lesen: Nach mehrstündiger Suche bin ich mittlerweile wirklich verzweifelt und komme als C++ Quasi-Jungfrau (zumindest komm' ich mir so vor) einfach nicht...