PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : definierten abschnitt in einer datei ersezten



meinereinerseiner
31-03-2005, 11:40
hi,

ich nochmal mit einem 2. problem:

habe eine datei:

bla
bla
####start
weis nicht wie viele
zeilen hier jetzt kommen und
den inhalt kenne ich auch nicht
####ende
bla
bla

und daraus soll folgendes werden:

bla
bla
####start
so hier kommt das neue
zeugs aus einer anderen datei rein
####ende
bla
bla


wie könnte ich das mit der bash lösen?

vielen dank
der tom

peschmae
31-03-2005, 13:19
Folgende Schritte würde ich machen:

1) Ein m4-Includedings einfügen z.B. vor dem ####start:
sed s/####start/include(`/dateilein')\n####start/

2) das ####start bis ####ende löschen:
sed /###start/,/####ende/d
leider kommt da gleich auch noch das start und ende mit, aber das kannst du ja nachher immer noch einfügen

3) m4-Makroprozessor darauf loslassen (der fügt die Datei ein) - musst halt gucken dass die Datei ein neues ####start und ende enthätlt oder das vorher mit sed irgendwie reinschmuggeln à la
sed s/\(include(.*)\)/####start\n\1\n####ende/

Das sollte eigentlich genügen

MfG Peschmä

Joghurt
31-03-2005, 20:19
Das ganze geht auch ohne m4, zumindest bei GNU sed:
sed -i '/^####start/ {p; r FUELLDATEI
}; /^####end/ p; /^####start/,/^####end/ d' DATEI achte auf den Newline nach FUELLDATEI.
(Die Fuelldatei braucht die Marker nicht zu enthalten)

peschmae
31-03-2005, 21:55
Sowas hatte ich auch angedacht nur gings bei mir dann irgendwie nicht, da hab ich gedacht m4 ist auch nett und je mehr Tools desto besser :D

MfG Peschmä