dnis822

Teil eines Strings löschen

Hallo zusammen,

ich komme gerade bei folgendem Punkt nicht weiter:
Ich habe eine Datei die völlig unformatiert ist, das bedeutet es steht alles in einer Zeile:

<Url>Das/ist/meine/Url</Url><!--Comment <Url2>Das/ist/meine/Url2</Url2> Comment-->

Ich möchte jetzt mit Hilfe eines Batch-Scriptes Url2 wieder einkommentieren, das bedeutet
"<!--Comment" und "Comment-->" sollen gelöscht werden.

Ist das Möglich?

Gruß
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 283898

Url: https://administrator.de/forum/teil-eines-strings-loeschen-283898.html

Ausgedruckt am: 15.06.2025 um 01:06 Uhr

117471
117471 25.09.2015 um 16:07:25 Uhr
Goto Top
In der Unix-Welt gibt es einen "sed", einen Windows-Port findet man offenbar hier: http://gnuwin32.sourceforge.net/packages/sed.htm

Man könnte z.B. die Zeichenketten "<!--Comment " und " Comment-->" (inklusive der Leerzeichen dahinter bzw. davor) durch "nichts" ersetzen face-smile
Dnis822
Dnis822 25.09.2015 um 16:14:08 Uhr
Goto Top
Hallo!
Vielen Dank für die schnelle Rückmeldung.

Es muss allerdings rein in einem Batch-Script passieren.
Könntest du mir vielleicht mit der suchen und ersetzen syntax auf die Sprünge helfen?

Gruß
117471
117471 25.09.2015 aktualisiert um 17:18:02 Uhr
Goto Top
Ich sehe gerade, es geht noch einfacher:

der Befehl

sed s/xyz/abc/g beispiel.txt

ersetzt in der Datei beispiel.txt alle xyz durch abc und schreibt das auf die (umleitbare) Standard-Ausgabe.

Du müsstest also nur sed installieren, den Ordner zur Binärdatei (C:\Program Files (x86)\GnuWin32\bin) in den Suchpfad aufnehmen und kannst dann direkt aus der Quelldatei lesen und in eine Zieldatei umleiten.
122990
122990 25.09.2015, aktualisiert am 26.09.2015 um 11:40:36 Uhr
Goto Top
Eine XML durch Batch jagen, wuahhhhh da kriegt man ja Gänsehaut bei den ganzen Batch-Sonderzeichen face-big-smile
 sed -r 's/<!--Comment|Comment-->//gi' datei.txt
Achtung im ersten Element wird mit Regular Expressions gearbeitet ! Spezielle Sonderzeichen sind mit Backslash zu escapen.
SED for Windows, download hier einfach nur die sed.exe aus dem BIN-Verzeichnis nehmen, fertig.

Gruß grexit
Endoro
Endoro 26.09.2015 aktualisiert um 04:47:41 Uhr
Goto Top
Hey,
in Batch sind verschiedene Zeichenkettenmanipulationen möglich, u.a. die Kürzung am Anfang (siehe set /?). Zu beachten ist, dass die maximale Zeichenkettenlänge nicht überschritten wird. Außerdem kann Batch nicht mit Zweibytecodes (UTF-8 usw.) arbeiten. Sed übrigens auch nicht.
Gruß, Endoro
122990
122990 26.09.2015 aktualisiert um 08:42:49 Uhr
Goto Top
Außerdem kann Batch nicht mit Zweibytecodes (UTF-8 usw.) arbeiten. Sed übrigens auch nicht.
SED kann das schon nur muss man den Befehl dann in ein UTF-8 encodiertes Script packen oder die Shell auf UTF-8 umstellen (Linux) und ausführen dann geht das schon.

Aber ich shätze mal der TO ist da hinsichtlich anderer Tools und Erweiterung Beratungsresistent, so wie seine letzten Threads aussehen.
Unter Windows würde ich dafür immer Powershell vorziehen, das hat mit dem Encoding etc. keine solchen Probleme.

Gruß grexit
117471
117471 26.09.2015 um 09:56:37 Uhr
Goto Top
Ja, genau das hatte ich ja bereits geschrieben?!?

Wobei: Ich meine gelesen zu haben, dass man < und > beim Windows-Port in Tüddelchen packen muss und die von mir aufgezeigte Syntax zum Aufruf ist tatsächlich korrekt.

Ich hatte das Ding nämlich probeweise installiert und bei der Gelegenheit mal ein paar hundert Kommentarzeilen aus einer Batch geschnippelt face-smile
122990
122990 26.09.2015 aktualisiert um 11:44:24 Uhr
Goto Top
Zitat von @117471:

Ja, genau das hatte ich ja bereits geschrieben?!?
Jup , aber nicht erwähnt das hier das erste Element als Regular Expression String interpretiert wird. Für einen Anfänger wie der TO es zu sein scheint nicht ganz unwichtig., sonst wundert er sich wenn er mal einen Punkt ersetzen möchte warum plötzlich alle Zeichen ersetzt werden face-wink

Gruß und schönes Wochenende
Endoro
Endoro 26.09.2015 um 13:07:22 Uhr
Goto Top
Hey,
sed unter cmd verarbeitet kein UTF-8. Egal was man da einstellt.
Gruß, Endoro
Dani
Dani 26.09.2015 aktualisiert um 13:15:03 Uhr
Goto Top
Moin,
Zitat von @122990:

Unter Windows würde ich dafür immer Powershell vorziehen, das hat mit dem Encoding etc. keine solchen Probleme.
Sehe ich genauso. Ist Powershell keine Option? Laienhaft gesagt ist Powershell Batch 2.0. ^^

Gruß,
Dani
117471
117471 26.09.2015 aktualisiert um 13:20:49 Uhr
Goto Top
Zitat von @Dani:

Sehe ich genauso. Ist Powershell keine Option? Laienhaft gesagt ist Powershell Batch 2.0. ^^

Das ist tatsächlich eine interessante Frage. Ich tüddel' seit MS-DOS 3.2 mit Batch-Dateien herum und mache immer noch alles "per Batch". Mein aktueller HiScore von dieser Woche war ein knapp 500 Zeilen langes Backup-Script und mit der PowerShell wäre das natürlich 1000 Mal einfacher gewesen.

Ich denke, es liegt daran, dass sich die PowerShell (noch) nicht so nachhaltig anfühlt wie Batch-Dateien. Bei denen hat man irgendwie immer das Gefühl, dass es die noch in 30 Jahren geben wird... face-smile
Dnis822
Dnis822 27.09.2015 um 17:46:50 Uhr
Goto Top
Hallo und vielen Dank für die ganzen Rückmeldungen.

Ich komme leider jetzt erst wieder dazu, dem weiter nachzugehen.
Ja leider bin ich darauf angewiesen das in einem Batch-Script zu realisieren.
Dnis822
Dnis822 27.09.2015 um 18:53:28 Uhr
Goto Top
Das ersetzen funktioniert nun,
nur Probleme habe ich mit dem hier : "<!--"

Ich habe versucht es so zu escapen ^<!-- und so ^<^!-- leider funktioniert das beides nicht.
Muss ich das anders escapen?
117471
117471 27.09.2015 um 19:25:45 Uhr
Goto Top
Zitat von @Dnis822:

Muss ich das anders escapen?

Mein Tipp vom 26. 09:56 Uhr hat nicht geklappt? Ich bin mir ziemlich sicher, dass das genau so in der Anleitung stand...
Dnis822
Dnis822 28.09.2015 um 08:55:04 Uhr
Goto Top
Guten Morgen!

Ich habe es so probiert:

^"<"!--
oder
"^<"!--

das funktioniert leider nicht,
kann mir hier noch jemand auf die Sprünge helfen ?
Dnis822
Dnis822 28.09.2015 um 08:57:46 Uhr
Goto Top
Nur das "<" zu ersetzen funktioniert, dafür brauch es auch keine Anführungszeichen:

Also so geht es ^<, aber wenn ich jetzt noch nach genau <!--Comment (mit ^<!--Comment) suche funktioniert es nicht.
Alle versuche evtl. das ! noch zu escapen (mit ^<^!--Comment) gelingen leider auch nicht.
Gruß
Dnis822
Dnis822 28.09.2015 um 09:25:19 Uhr
Goto Top
Okay ich habe es.

So muss es aussehen: "^<^^!--Comment"

Kann damit geschlossen werden.
Gruß
117471
117471 28.09.2015 um 09:31:24 Uhr
Goto Top
Das kannst Du selber machen: "Frage als gelöst markieren" und "Zur Lösung beigetragen" anklicken.