SED/AWK - Ersetzung mit Zwischenspeichern

furryhamster

Lt. Commander
Registriert
Okt. 2008
Beiträge
1.098
Hi,

ich suche eine SED-Befehl oder oder AWK Skript um folgendes zu lösen (Eckige Klammern zur Verdeutlichung von Parts):

Ausgangsstring:
[mein Ausgangsstring] [${testvariable}@$test] [-t noch mehr text]

Zielstring (incl Umbruch):
[neuer Zieltext] [-t noch mehr text]
[text] [${testvariable}@$test]

Ich möchte also "mein Ausgangsstring" durch "neuer Zieltext" ersetzen, das "${testvariable}@$test" Zwischenspeichern und hinter einem neuem Text in einer zweiten Zeile speichern und das, was zuvor hinter "${testvariable}@$test" stand hinter "neuer Zieltext" schreiben.

Leider bin ich nicht so Regex bewandert. Kann mir jemand weiterhelfen?
 
Hallo,

Kannst du mal ein explizites Beispiel eines Textes posten?
Sonst wird es eventuell schwer sich an bestimmten Zeichen anzupassen oder zu orientieren.

Edit:
Ich bin einfach mal von einem Text in folgender Form ausgegangen (Leerzeichen mit Absicht so eingefügt, um verschiedene Fälle nachvollziehen zu können):

Code:
cat zuvor.txt
Ausgangsstring1 ${Hallo1}@$Welt6 -t Endte xt1
Au sgangsstring2 ${Hallo2}@$W elt5 -t Endtext2
Ausgangsst ring3 ${Hallo3}@$Welt4 -t Endtext3
Ausgangsstring4 ${Ha llo4}@$Wel t3 -t En dtext4
Ausgangsst ring5 ${Hallo5}@$Welt2 -t Endtext5
Aus gangsstring6 ${Hal lo6}@$Welt1 -t Endt ext6

Code:
cat zuvor.txt | sed -e 's|[^\$]*\(${.*}\)\(@$[^-]*\)\(-t.*$\)|Neuer Text \3\nNoch mehr neuer Text\1\2|'

ergibt dann folgende Ausgabe:
Code:
Neuer Text -t Endte xt1
Noch mehr neuer Text${Hallo1}@$Welt6
Neuer Text -t Endtext2
Noch mehr neuer Text${Hallo2}@$W elt5
Neuer Text -t Endtext3
Noch mehr neuer Text${Hallo3}@$Welt4
Neuer Text -t En dtext4
Noch mehr neuer Text${Ha llo4}@$Wel t3
Neuer Text -t Endtext5
Noch mehr neuer Text${Hallo5}@$Welt2
Neuer Text -t Endt ext6
Noch mehr neuer Text${Hal lo6}@$Welt1
 
Zuletzt bearbeitet:
Hey,

das sieht super aus! kann ich leider erst am Montag testen, werde hier dann aber noch mal editieren! Ganz vielen lieben Dank!
 
Hallo furryhamster,

wie sieht es inzwischen aus?
Hat alles geklappt?

Nur damit ich den Punkt von meiner ToDo-"when in leerlauf @work"-Liste streichen kann.
 
War leider etwas stressig und kann jetzt erst anworten. Hat jetzt alles geklappt. Es waren noch ein bisschen Anpassung notwendig, da mein Beispiel doch zu "spezifisch" war und dann nicht alle Fälle abgedeckt wurden. Konnte es aber mit deiner Hilfe lösen. Vielen Dank nochmal!
 
Zurück
Oben