Editoren hängen sich während Suchen/Ersetzten auf

B-52

B-52

Routinier
Hallo Community,

versuche meine bestehende Online-Gallery zwecks Entwicklung lokal auf Debian zu installieren. Dabei muss ich eine 16.5 MB grosse *.sql Datei bearbeiten und alle URL's wie z.B. http://www.example.com/bilder in http://localhost/bilder per Suchen/Ersetzten umbenennen.

Habe es mit gedit, Bluefish Editor und nano versucht. Aber irgendwie ist mein Rechner mit dieser Aufgabe überfordert und hängt sich immer auf. gedit und Bluefish Editor können die Datei nicht einmal laden. Nano liesst zwar die 16.5 MB grosse Datei, bleibt dann aber während dem Suchen/Ersetzen irgendwie stecken...

Jemand eine Idee, wie ich das hinkriege?

Gruss B-52
 
Zuletzt bearbeitet:
Code:
perl -pe "s/www\.example\.com/localhost/" inputdatei > outputdatei
 
@bitmuncher

hey Danke. Das funktioniert tatsächlich!

Leider bin ich mit perl so wenig wie gar nicht vertraut und die Syntax verstehe ich (noch) nicht.

Dein Befehl ersetzt zwar alle www.example.com mit localhost, nicht jedoch http://www.example.com durch http://localhost

da raff ich zur Zeit noch nicht so ganz...

Gruss B-52
 
Zuletzt bearbeitet:
Hallo

Hast du mal pyrename, oder gprename versucht ?
Ich weiß zwar abe ncith, ob die mit so großen Dateien umgehen können.


mfg
schwedenmann
 

das ist ja toll. Mit sed habe ich es tatsächlich hingekriegt, kann zur Zeit aber nicht sagen wie genau.

Bin mit den Nerven am Ende und weiss nicht mehr, welcher meiner hundert Versuche nun zum Erfolg geführt hat. Muss mal meine Bash-History durchsuchen...

LG B-52
 
Dein Befehl ersetzt zwar alle www.example.com mit localhost, nicht jedoch http://www.example.com durch http://localhost

Wozu muss denn das 'http://' ersetzt werden, wenn es bei beiden Strings gleich ist? Es muss doch nur der Teil ersetzt werden, der sich tatsächlich ändert. In dem Fall also die Domain.

Code:
bitmuncher@mbp2:~> cat test.txt
http://www.example.com/bilder
http://www.example.com/bilder
foobar http://www.example.com/bilder
foobar http://www.example.com/bilder foobar
"http://www.example.com/bilder"
foobar"http://www.example.com/bilder"foobar

bitmuncher@mbp2:~> perl -pe "s/www\.example\.com/localhost/" test.txt  > testout.txt

bitmuncher@mbp2:~> cat testout.txt
http://localhost/bilder
http://localhost/bilder
foobar http://localhost/bilder
foobar http://localhost/bilder foobar
"http://localhost/bilder"
foobar"http://localhost/bilder"foobar

Im Endeffekt wird hier nichts anderes gemacht als eine Perl-Regex auf eine Datei angewendet. Da Perl im Gegensatz zu sed nicht zeilenbasiert arbeitet, kann es nicht passieren, dass die letzte Zeile der Datei missachtet wird, wenn keine "finishing newline" vorhanden ist. Das tut sed ganz gern mal.
 
Wozu muss denn das 'http://' ersetzt werden, wenn es bei beiden Strings gleich ist? Es muss doch nur der Teil ersetzt werden, der sich tatsächlich ändert. In dem Fall also die Domain.
Das Protokoll mit anzugeben ist (nur) dann sinnvoll, wenn der Domainname der gesucht wird auch außerhalb der URL vorkommt, wo er nicht ersetzt werden soll:
Code:
[neumannr@ativbook ~]$ cat test.txt 
http://mysite.de/index.php
http://mysite.de/index.php?redirect=google.de
http://mysite.de/index.php?redirect=mysite.com

[neumannr@ativbook ~]$ sed 's/mysite/othersite/g' test.txt 
http://othersite.de/index.php
http://othersite.de/index.php?redirect=google.de
http://othersite.de/index.php?redirect=othersite.com

[neumannr@ativbook ~]$ sed 's|http://mysite|http://othersite|g' test.txt 
http://othersite.de/index.php
http://othersite.de/index.php?redirect=google.de
http://othersite.de/index.php?redirect=mysite.com

[neumannr@ativbook ~]$
 
In dem Fall:

Code:
perl -pe "s/http:\/\/www\.example\.com/http:\/\/localhost/" test.txt  > testout.txt
 
Wozu muss denn das 'http://' ersetzt werden, wenn es bei beiden Strings gleich ist
um auf Deine Frage zu Antworten: Gallry 3 hinterleg in der DB komischerweise die URL auf zwei verschiedene Arten:
manchmal nach dem Muster http://www.example.com/blablabla und dann www.example.com/blablabla

versuche ich Gallery3 nun lokal zum Laufen zu bringen, muss ja alles nach dem Muster http://localhost/blablabla umbenannt werden!

In dem Fall:

Code:
perl -pe "s/http:\/\/www\.example\.com/http:\/\/localhost/" test.txt  > testout.txt
ja, danke. So geht es jetzt :-)

PS: Eine weitere Methode wurde mir mittels Manipulation der .htaccess vorgeschlagen. Dieser Weg wäre auf jeden Fall noch zu prüfen. Zur Zeit bin ich jedoch froh, dass sich das Problem gelöst hat!

Vielen Dank an alle Helfer!

LG B-52
 
Zurück
Oben