Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Einlesen von Dateien im "sed"

  1. #1
    Registrierter Benutzer
    Registriert seit
    20.03.2006
    Beiträge
    180

    Einlesen von Dateien im "sed"

    Hallo,

    ich habe eine Bibliothek von Textdateien erstellt, die bestimmte Daten enthalten. Aus diesen Grundbausteinen möchte ich komplexere Textdateien erstellen, die einerseits aufgabenspezifische Daten enthalten, in denen gleichzeitig aber auch die Inhalte der Grundbausteine eingebunden werden sollen, d.h. letztgenannte sollen wie bei "include"-Anweisungen eingebunden werden.

    Gibt es sed-Befehle, mit denen man die die Inhalte untergeordneter Dateien in die übergeordnete Datei (genauer gesagt: in eine Kopie derselben) einfließen lassen kann? Die Verschachtelungstiefe ist 1 (nur eine Ebene untergeordneter Dateien)

    Beispiel einer übergeordneten Datei:

    Zeile 1
    Zeile 2
    Zeile 3
    #include Datei-01
    Zeile 4
    Zeile 5
    #include Datei-02

    In diesem Beispiel ist "#include" die Anweisung, die auf untergeordnete Dateien Bezug nimmt. Die Anweisung selbst kann auch anders lauten.

    Vielen Dank im voraus

    Gruss
    Dieter

  2. #2
    Registrierter Benutzer Avatar von Molaf
    Registriert seit
    15.11.2004
    Beiträge
    127
    Hallo,

    sind denn
    Code:
    Zeile 1
    Zeile 2
    Zeile 3
    der Inhalt aus der untergeordneten Datei 'Datei-01' ?

    Ansonsten wüßte ich gar nicht woher die Zeilen zwischen den includes herkommen.

    Gruß,
    Molaf

  3. #3
    Registrierter Benutzer
    Registriert seit
    20.03.2006
    Beiträge
    180
    Hallo Molat,

    die Zeilen "Zeile 1", "Zeile 2" usw. stehen bereits in der übergeordneten Datei und sollen dort unverändert bleiben.

    An die Stelle von "include Datei-01" usw. soll deren Inhalt eingefügt werden.

    Gruß
    Dieter

  4. #4
    Registrierter Benutzer
    Registriert seit
    18.04.2008
    Beiträge
    59
    So geht es statisch:
    Code:
    # ersetzt include in Datei-00 und schreibe nach file.out
    sed "s/^#include Datei-01/`cat Datei-01`/" Datei-00 > file.out
    dynamisch ist es etwas schwieriger

    Code:
    $ echo "Bla
    #include \"test.in\"
    BlaBla
    " > file.in
    So sollte es gehen, doch \1 wird nicht ersetzt:
    Code:
     $ sed "s/^#include \"\(.*\)\"/$(cat \\1)/" file.in
    Code:
     $ sed "s/^#include \"\(.*\)\"/cat \\1/" file.in 
    Bla
    cat test.in
    BlaBla

    Code:
    $ sed "s/^#include \"\(.*\)\"/$(date)/" file.in
    Bla
    Tue May 24 23:32:11 CEST 2011
    BlaBla

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •