bloodyrulz
Goto Top

SED Sonderzeichen maskieren klappt nicht.

Hallo zusammen,

ich hoffe Ihr könnt mir helfen.
System: Windows

Folgendes Problem:
Ich habe eine Konfigdatei von einem Router.
Diese enthalten die Zeichen <> z.B so: <Targethost1> 172.18.XX.YY </Targethost1>

Mein Ziel ist es. die 172.18.XX.YY mit einer IP z.B. 172.18.25.60 zu ersetzen. Leider kann ich nicht einfach die IP ersetzen da es 4 Targethosts 1-4 gibt und in jeder muss eine andere 172er Adresse stehen. Daher muss ich mit Targethost1> Targethost2> usw. suchen und ersetzen.

Ausschnitt aus meinem Versuch.
set th1= 172.18.XX.YY
set pingcheck1=172.18.25.60
sed -e "s/\<Targethost1\> *%th1%/\<Targethost1\> %pingcheck1% /" quell_datei.epr > Output.epr  

sobald ich die <> in der Quelldatei zu Testzwecken entferne, funktioniert es wunderbar.

Würde mich über Hilfe sehr freuen.

Danke

Gruß
Andreas

Content-Key: 257055

Url: https://administrator.de/contentid/257055

Printed on: April 19, 2024 at 12:04 o'clock

Mitglied: 114757
114757 Dec 08, 2014 updated at 15:43:56 (UTC)
Goto Top
Moin Andreas,
benutze das ^ Zeichen um Sonderzeichen zu maskieren, also z.B.
^>
Gruß jodel32
Member: BloodyRulz
BloodyRulz Dec 08, 2014 updated at 15:58:02 (UTC)
Goto Top
Vielen Dank für die schnelle Antwort,

ich habe es auf die schnelle mal probiert, leider hat sich die IP nicht ersetzt. (ohne Fehlermeldung)

Ich werde das gleich morgen nochmal genau testen und probieren.

Muss ich das dann in der ganzen sed Zeile abändern obwol die anderen "Ersetzungen" super funktionieren?

sed -e "s/DS100/%ds100%/; s/ART STANDORTNAME/%artstandort%/; s/ZZ.FF/%zo%.%do%/; s/ZZ.0./%zo%.0./; s/.HH/.4/; s/\$Revision: /Revision:/; s/ *\$ */  /; s/^<Targethost1^> *%th1%/^<Targethost1^> %pingcheck1% /" %quell_datei% > %ds100%_%artstandort%_RFU1.epr  

Danke für deine schnelle Hilfe.

Gruß
Andreas
Member: Gersen
Gersen Dec 08, 2014 updated at 23:53:02 (UTC)
Goto Top
Hallo,

vielleicht habe ich einen Denkfehler, aber die Zeichen "<>" müssen in sed nicht escaped werden, oder?

Ein
sed -e "s/<Targethost1>%th1%/<Targethost1> %pingcheck%/"
tut es -hier zumindest- wunderbar. Wichtig ist, dass bei Deiner Zuweisung der Variablen "th1" in Windows die Variable ein führendes Leerzeichen hat (" 172.18.XX.YY") - das muss im SED-Befehl beachtet werden (wenn es so beabsichtigt ist).

Gruß,
Gersen
Member: colinardo
Solution colinardo Dec 08, 2014, updated at Dec 09, 2014 at 07:13:01 (UTC)
Goto Top
Hallo Andreas,
das hier macht bei mir das gewünschte
@echo off
set pingcheck1=172.18.25.60
sed -e "s/\(<Targethost1>\).*\(<\/TargetHost1>\)/\1%pingcheck1%\2/i" quell_datei.epr >Output.epr  
Grüße Uwe
Member: BloodyRulz
BloodyRulz Dec 09, 2014 at 07:12:39 (UTC)
Goto Top
Vielen Dank an alle,

die Lösung von colinardo hat den gewünschten Erfolg gebracht.

Vielen Dank

Gruß
Andreas

(closed)