PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programm zur Ersetzung von "\" durch "/"



macbest
01-06-2008, 15:12
Hallo,

ich habe folgendes Problem:

- Ich habe für einen Windows Server eine Webseite erstellt. Diese möchte ich
nun jedoch unter einem Linux Server betreiben. Das Problem ist jedoch, dass
ich in allen HTML-Dokumenten einen "\" für z.B. Bilder benutzt habe, Linux
für Pfadangaben jedoch nur den Slash kennt.

- Gibt es ein Programm mit dem ich automatisch alle vorhandenen \ gegen /
ersetzen kann?

Ich habe nämlich keine Lust alle Seiten manuell umzustellen.

Gruß macbest

jeebee
01-06-2008, 18:03
zb.
sed -e 's#\\#/#g' infile > outfile oder falls du die alten Files nicht behalten willst:
sed -ie 's#\\#/#g' infile oder in einem Texteditor deiner Wahl mit dem Ersetzen-Werkzeug.
Alle html-Dateien im aktuellen Verzeichnis:
find . -iname '*.html' -type f -exec sed -ie 's#\\#/#g' {} \; vor diesem Befehl noch ein [code]find . -iname '*.html' -type f machen, damit du siehst welche Dateien alle verändert werden.

Ich empfehle dir vorher ein Backup zu machen.

HTH jeebee

edit: setzt alles die Linux-Kommandozeile voraus.

peschmae
01-06-2008, 18:04
Nuja,


find -name "*.html" -exec sed s#\\\\#/#g -i {} \;

Aber das geht natürlich nur dann gut wenns keine \ im Dokument hat die nicht ersetzt werden sollten...

MfG Peschmä

jan61
01-06-2008, 22:35
Moin,


zb.
sed -e 's#\\#/#g' infile > outfile

der Code ist ja ok, aber ich frage mich immer wieder, warum Ihr meint, dem sed bei jeder Gelegenheit die -e-Option andienen zu müssen?
Aus man sed:

-e script, --expression=script
add the script to the commands to be executed
Da gibts doch gar nichts, wozu man hinzufügen müsste! Der o. g. sed funktioniert ohne -e-Option genauso gut. Das macht doch nur Sinn, wenn Ihr z. B. mittels mehrerer -e-Optionen nacheinander unterschiedliche (nacheinender abzuarbeitende) Operationen anhängen wollt.

Für den 99%-0815-sed ist diese Option schlicht und einfach überflüssig. Lasst das weg, wenn Ihr es nicht unbedingt braucht.

Jan

jeebee
02-06-2008, 15:21
Ok, danke. Wusst ich gar nicht :o

macbest
02-06-2008, 19:32
Hallo,
danke für die Antwort. Also das funktioniert ja richtig gut. Hätte nicht gedacht, dass man das so einfach machen kann.

Weitere Frage:
- Wie kann ich die folgende Zeichenfolge umwandeln?
"/

Grund:
Ich hatte die Seite vorher immer direkt unter /htdocs/ auf dem Server.
Nun möchte ich sie in einem Unterordner z.B. /htdocs/webseite/ ablegen. Das Problem ist jedoch, dass ich alle Links in untergeordnete Ordner (z.B. /hdocs/bilder) wie folgt gesetz habe: src="/bilder/bild.jpeg". Das bedeutet ja im Klartext dass immer vom root-ordner aus gesucht wird.

Ein Bild unter: /localhost/webseite/bilder/ wird mit meiner bisherigen Verlinkung
nun unter /localhost/bilder gesucht. Wenn ich also nun den ersten / in jedem Link wegbekäme würde die Sache funktionieren.

Ich müsste also "/ durch " ersetzen
(D.h. src="/bilder/bild1.jpeg" würde dann zu src="bilder/bild1.peg")

Ich habe es mit:
sed -i 's#\"/##g' Dateiname versucht, funktioniert aber nicht!
Brauche Hilfe.

Gruß,
macbest

ContainerDriver
02-06-2008, 19:38
Hallo,

was genau funktioniert denn daran nicht? Du musst noch ein " einfügen (sonst fehlt das anschließen in der HTML-Datei), meinst du das mit nicht funktionieren?


sed -i 's#\"/#\"#g' Dateiname


Gurß, Florian

macbest
03-06-2008, 13:34
Hallo,


nach Eingabe von " sed -i 's#\"/#\"#g' Dateiname " erhalte ich die
Fehlermeldung

-e Ausdruck #1, Zeichen 1: unknown command: ' "



Gruß,
macbest

ContainerDriver
03-06-2008, 16:09
Kannst du mal den genauen Befehlsaufruf posten (am besten aus der Shell kopieren)?
Was ist das denn für ein sed?

macbest
03-06-2008, 17:08
Hallo,

also das ist sed in der Version 4.1.5 für Windows.

Eingabe:
c:\users\macbest sed.lnk -i 's#\"/#\"#g' anderes.php

Ausgabe:
C:\Program Files\GnuWin32\bin\sed.exe: -e Ausdruck #1, Zeichen 1: unknown
command: ' "

Gruß macbest

jan61
03-06-2008, 23:08
Moin,

ungeprüft: Die \ vor den " sind überflüssig. Innerhalb einfacher Hochkommata wird ein " nicht interpretiert, sondern als das genommen was er ist. Durch die \ gaukelst Du dem sed irgendwelche Zeichenklassen o. a. vor, die es nicht gibt. Also einfach mal
sed -i 's#"/#"#g' Dateiname probieren.

Hm, doch noch einen kurzen Test gemacht - scheint zu stimmen ;-)

jan@jack:~/Development> echo 'hier ein "/ und hier ein " ohne /' | sed 's#"/#"#'
hier ein " und hier ein " ohne /
Jan

macbest
04-06-2008, 17:16
Hallo,

so: sed.lnk -i "s#\"/#\"#g" anderes.php hats funktioniert. Danke für die Hilfe.

Gruß Macbest

macbest
31-07-2008, 22:42
Hallo,

Es geht um folgende HTML-Datei: (hier nur ein Ausschnitt)



<TABLE CELLSPACING = 0 CELLPADDING = 0 BORDER = 0>
<TR><TD><IMG SRC='matrixmultiplikation_1_1.jpg' WIDTH=7 HEIGHT=8></TD><TD><IMG
SRC='matrixmultiplikation_2_1.jpg' WIDTH=31 HEIGHT=8></TD><TD><IMG SRC='matrixmultiplikation_3_1.jpg' WIDTH=64
HEIGHT=8></TD><TD><IMG SRC='matrixmultiplikation_4_1.jpg' WIDTH=63 HEIGHT=8></TD><TD><IMG
SRC='matrixmultiplikation_5_1.jpg' WIDTH=59 HEIGHT=8></TD><TD><IMG SRC='matrixmultiplikation_6_1.jpg' WIDTH=41
HEIGHT=8></TD><TD><IMG SRC='matrixmultiplikation_7_1.jpg' WIDTH=63 HEIGHT=8></TD><TD><IMG
SRC='matrixmultiplikation_8_1.jpg' WIDTH=66 HEIGHT=8></TD><TD><IMG SRC='matrixmultiplikation_9_1.jpg' WIDTH=61
HEIGHT=8></TD><TD><IMG SRC='matrixmultiplikation_10_1.jpg' WIDTH=30 HEIGHT=8></TD></TR>
<TR><TD><IMG SRC='matrixmultiplikation_1_2.jpg' WIDTH=7 HEIGHT=38></TD><TD><IMG
SRC='matrixmultiplikation_2_2.jpg' WIDTH=31 HEIGHT=38></TD><TD><IMG SRC='matrixmultiplikation_3_2.jpg'
WIDTH=64 HEIGHT=38></TD><TD><IMG SRC='matrixmultiplikation_4_2.jpg' WIDTH=63 HEIGHT=38></TD><TD><IMG
SRC='matrixmultiplikation_5_2.jpg' WIDTH=59 HEIGHT=38></TD><TD><IMG SRC='matrixmultiplikation_6_2.jpg'
WIDTH=41 HEIGHT=38></TD><TD><IMG SRC='matrixmultiplikation_7_2.jpg' WIDTH=63 HEIGHT=38></TD><TD><IMG
SRC='matrixmultiplikation_8_2.jpg' WIDTH=66 HEIGHT=38></TD><TD><IMG SRC='matrixmultiplikation_9_2.jpg'
WIDTH=61 HEIGHT=38></TD><TD><IMG SRC='matrixmultiplikation_10_2.jpg' WIDTH=30 HEIGHT=38></TD></TR>
<TR><TD><IMG SRC='matrixmultiplikation_1_3.jpg' WIDTH=7 HEIGHT=24></TD><TD><IMG
SRC='matrixmultiplikation_2_3.jpg' WIDTH=31 HEIGHT=24></TD><TD><IMG SRC='matrixmultiplikation_3_3.jpg'


In dieser Datei soll src=' durch src='bilder-matrixmultiplikation/ ersetzt werden. Ich möchte die ganzen Bilder also in einen gesonderten Ordner verschieben.

(Wie man zu so einer Datei kommt: Ich habe mir mit einem Grafikprogramm ein Bild erstellt und dies mit Splitz in ein HTML Dokument mit dem gestückelten Bild als Hintergrundgrafik umgewandelt)

Folgendes habe ich mit sed ausprobiert:



sed.lnk -e "s#src=\'#src=bilder-matrixmultiplikation/#g" 33matrix_mult_inc.php


Mit diesem Befehl habe ich zwar den Quellcode der HTML Datei in der DOS-Box , es wird aber leider nichts geändert.

Was habe ich falsch gemacht?

Gruß,
macbest

jan61
04-08-2008, 19:33
Moin,

siehe man sed, Option -i. Die Option hattest Du doch schon mal in Benutzung!

Jan

BTW: Deine Ersetzung ist unvollständig - es fehlt das einleitende Hochkomma nach "src=".