Innerhalb einer sed Ersetzung eine bash aufrufen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von chris_sy, 20.04.2010.

  1. #1 chris_sy, 20.04.2010
    Zuletzt bearbeitet: 20.04.2010
    chris_sy

    chris_sy Grünschnabel

    Dabei seit:
    27.02.2007
    Beiträge:
    1
    Zustimmungen:
    0
    Hallo,

    ein

    Code:
    echo ttt | sed 's/[t]\{3\}/\0 param2 param3/g'
    liefert ttt param2 param3

    ein

    Code:
    echo ttt | sed "s/[t]\{3\}/$(./bashscript.sh param2 param3)/g"
    liefert die Ausgabe von
    Code:
    ./bashscript.sh param2 param3
    ein

    Code:
    echo ttt | sed "s/[t]\{3\}/$(./bashscript.sh \0 param2 param3)/g"
    geht leider nicht. Es wird nicht
    Code:
    ./bashscript.sh ttt param2 param3
    aufgerufen, sondern
    Code:
    ./bashscript.sh \0 param2 param3
    Weis jemand, wie man das hin bekommen könnte? :hilfe2:

    Soweit erst einmal
     
  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 bytepool, 20.04.2010
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,

    erstens verstehe ich nicht wieso du die Ausgabe nicht einfach vorher in einer Variable speicherst
    Code:
    foo=$(./bashscript.sh param2 param3)
    
    und zweitens funktioniert auch dein erster Ansatz hier wunderbar. Aber wie immer, kein OS angegeben...

    mfg,
    bytepool
     
  4. #3 Gott_in_schwarz, 20.04.2010
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    Doch es geht, du weißt nur nicht in welcher Reihenfolge die entsprechenden Ersetzungen durchgeführt werden. Natürlich wird der Output der Subshell erzeugt *bevor* sed auch nur aufgerufen wird.
    Code:
    $ man bash| less -p '^EXPANSION'
    Und erst *nach* all diesen Expansionen werden sed die Argumente übergeben.

    Lösung: das ganze in mehr als einem Kommando machen.
     
  5. #4 bytepool, 20.04.2010
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Oh Mann, ich sollte mal zum Augenarzt gehen, ich hab mal wieder nicht richtig gelesen und sein Problem gar nicht verstanden. ;)
    Dachte es geht drum dass die Subshell nicht evaluiert wird...

    mfg,
    bytepool
     
  6. Anzeige

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

Innerhalb einer sed Ersetzung eine bash aufrufen

Die Seite wird geladen...

Innerhalb einer sed Ersetzung eine bash aufrufen - Ähnliche Themen

  1. Datum innerhalb einer Datei wandeln dd.mm.jjjj auf jjj-mm-dd

    Datum innerhalb einer Datei wandeln dd.mm.jjjj auf jjj-mm-dd: Hallo Leute! Mein Problem ist das Datumsformat inerhalb einer Textdatei. Kann man mit "sed" diese Textdateien so ändern, daß ich die Zeilen in...
  2. Funktionsaufruf innerhalb einer Funktion

    Funktionsaufruf innerhalb einer Funktion: Hi, ist es möglich eine Funktion aus einer anderen Funktion heraus aufzurufen ? Habe es so versucht: function funktion_1() { ... return $wert...
  3. if abfrage innerhalb einer pipe.

    if abfrage innerhalb einer pipe.: Hallo Ihr wist ja bestimmt, wie ich eine Entscheidung innerhalb der Pipe treffen kann. Im folgenden Beispiel steht cut -f1-10 doppelt drin. Das...
  4. PYTHON: Listen innerhalb einer Liste nach einem bestimmten Feld sortieren

    PYTHON: Listen innerhalb einer Liste nach einem bestimmten Feld sortieren: Hallo zusammen, folgendes Problem: Ich habe eine Liste in der viele Listen vorhanden sind: a = [ ['Name', 'Vorname', 'Alter'], ['Name',...
  5. Rechte innerhalb einer Anwendung

    Rechte innerhalb einer Anwendung: Hi folks! Habe eclipse nun zum laufen gebracht, das Problem ist nur, dass jedes Mal wenn ich ein neues Projekt erstelle, der Fehler "could not...