Ersetze URL in HTML-File

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
emeidi
Beiträge: 49
Registriert: 30.06.2004 16:34:20

Ersetze URL in HTML-File

Beitrag von emeidi » 29.10.2004 22:02:24

Hallo zusammen

Ich betreue eine Web-Site, die schon etwas in die Jahre gekommen ist. Von CMS keine Spur.

Nun wurde vor kurzem die Position einer anderen Web-Site geändert, auf die von praktisch jeder Seite verlinkt wird.

Statt jetzt die ganze Site herunterzuladen, ein Search/Replace zu machen wollte ich fragen, ob es ein Shell-Commando gibt, das Strings in einer Datei ersetzen kann.

Dies würde ich in ein nettes Shell-Script einbauen, das mir mit find alle .html-Files im wwwroot (und darunter) ausgeben und diese mit exec behandeln würde.

Danke für Tipps!

Liebe Grüsse
Mario

<mawe>
Beiträge: 24
Registriert: 07.09.2004 15:01:41
Wohnort: Purkersdorf

Beitrag von <mawe> » 29.10.2004 22:24:16

Hi!

Darf's auch Perl sein?

Code: Alles auswählen

perl -pi -e 's/alte_url/neue_url/g' *.html
Oder, um von jeder Datei eine Sicherheitskopie zu machen:

Code: Alles auswählen

perl -pi.bak -e 's/alte_url/neue_url/g' *.html
Gruß, <mawe>

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Beitrag von peschmae » 29.10.2004 22:33:42

oder auch wie vorgeschlagen sowas:

ALTEURL=http://da.sind.wir.nicht.mehr.com
NEUEURL=http://hier.sind.wir.com
find -name "*.html" -exec sed "s#$ALTEURL#$NEUEURL#g" -i {} \;

Natürlich vorher ein Backup machen ;)

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

emeidi
Beiträge: 49
Registriert: 30.06.2004 16:34:20

Wieso stelle ich immer zuerst Fragen google erst später?

Beitrag von emeidi » 29.10.2004 22:42:26

Hallo

Folgendes Script habe ich mit Hilfe eines Google-Links zusammengebaut. Getestet habe ich es zuerst auf meinem Test-Server (Debian) hier zu Hause, danach ging es scharf ans Werk auf dem Uni-Server, der unter Solaris läuft:

Code: Alles auswählen

#! /bin/sh
STRSEARCH="www.unibe.ch\/faculties\/humanities_d.html"
STRREPLACE="www.philhist.unibe.ch\/"

if [ -d /var/www/hist ]
then
	# AT HOME
	cd /var/www/hist
else
	# ON UBECX
	cd /u/hist/www
fi

find . -type f -name '*.htm' -print | while read i
do
	cp "$i" "$i.tmp"
	
	if [ -f "$i.tmp" ]
	then
		#echo "s/$STRSEARCH/$STRREPLACE/g"
		sed "s/$STRSEARCH/$STRREPLACE/g" "$i" > "$i.new"
		if [ -f "$i.new" ]
		then
			mv "$i.new" "$i"
		else
			echo "$i.new doesn't exist"
		fi
	else
		echo "$i.tmp wasn't created"
	fi
done
Das .tmp-Backup habe ich nach Tests auf dem Uni-Server sein lassen, damit es mir das Directory nicht vollmüllt. Im Worst Case wäre die Site über das Weekend offline gegangen und ich hätte bei unserem Sysadmin Backups von gestern angefordert.

Vor dem Drücken der Return-Taste war es mir doch etwas kribbelig ;-) Aber: No risk, no fun.

Liebe Grüsse
Mario

Antworten