Archiv verlassen und diese Seite im Standarddesign anzeigen : Suchen & Ersetzen in Textdateien
Hallo.
Es gibt in kwrite/kate die Option, in einer Textdatei nach einer Zeichenkette zu suchen und diese zu ersetzen. Kann man diese Funktion auf mehrere Dateien gleichzeitig anwenden? Es soll also in mehreren Dateien nach einer Zeichenkette gesucht werden und diese automatisch durch eine andere ersetzt. Gibt es ein Programm, das so was erledigt?
bluesurfer
24.05.07, 16:06
also in kate geht das für einzelne Dateien relativ einfach mit "Bearbeiten" -> "Ersetzen".
Für mehrere Dateien würd ich mir ein Script schreiben, z.B. in bash.
Ich versuche es gleich damit (http://www.budda.ch/info/linux).
Ansonsten versuche es mal mit sed !
man sed
Greeez Oli
.. wenn du derartige Aufgaben öfter hast lohnt sich Perl ..... seitdem ich Perl kenne habe ich weder DOS Batch Skripte noch irgendwelche Shell Skripte geschrieben ....
Ich kriege das leider nicht hin, weder mit bash noch mit perl.
Das liegt daran, dass in den von mir angegebenen Zeichenketten "/" Slash enthalten sind. Damit kommt das Programm natürlich nicht klar.
Mit Perl geht das ja so:
find -type f -exec perl -i -p -e 's/pattern/target/g;' {} \;
Ich habe z. B. =http://www.discogs.com/release/9969 als pattern und comment=http://www.discogs.com/release/9969 als target:
find -type f -exec perl -i -p -e 's/=http://www.discogs.com/release/9969/comment=http://www.discogs.com/release/9969/g;' {} \;
Das geht verständlicherweise nicht. Mit der Bash und sed genauso. Wie kann ich so eine komplizierte Zeichenkette mit Sonderzeichen in der Konsole übergeben? Ich habe es schon mit Anführungszeichen versucht ("pattern" und "target"), aber das geht auch nicht.
Hallo,
Du kannst versuchen, die / mit \ zu escapen oder ein anderes Trennzeichen verwenden, z .B. so:
find -type f -exec perl -i -p -e 's#=http://www.discogs.com/release/9969#comment=http://www.discogs.com/release/9969#g;' {} \;
Grüße, LP
Klasse! Ich habe es mit # als Trennzeichen probiert. Es funktioniert mit Bash und Perl. Danke, Luzi.
Ich brauche jetzt nur noch Suchen & Löschen. Weiß jemand, wie das geht?
Also nach dem Muster: Suche nach =http://www.discogs.com/release/9969 und lösche die ganze Zeile, in der diese Zeichenkette vorkommt.
Klasse! Ich habe es mit # als Trennzeichen probiert. Es funktioniert mit Bash und Perl. Danke, Luzi.
Ich brauche jetzt nur noch Suchen & Löschen. Weiß jemand, wie das geht?
Also nach dem Muster: Suche nach =http://www.discogs.com/release/9969 und lösche die ganze Zeile, in der diese Zeichenkette vorkommt.
Suchen&löschen = Ersetzen gegen nichts, oder?
Ich brauche jetzt nur noch Suchen & Löschen. Weiß jemand, wie das geht?
Also nach dem Muster: Suche nach =http://www.discogs.com/release/9969 und lösche die ganze Zeile, in der diese Zeichenkette vorkommt.
grep -v SUCHBEGRIFF
grep -v SUCHBEGRIFF
Das löscht gleich die ganze Zeile - will Ede das?
Das löscht gleich die ganze Zeile - will Ede das?
Wenn ich davon ausgehe, dass er das will, was er sagt, dass er will, schon:
Suche nach =http://www.discogs.com/release/9969 und lösche die ganze Zeile, in der diese Zeichenkette vorkommt.
Wenn ich davon ausgehe, dass er das will, was er sagt, dass er will, schon:
ok, dieses Argument lasse ich ausnahmsweise mal gelten :o
Stand das vorhin schon da?:D
(jaja, ich habe es ja selber zitiert grmmml)
Sehr schön. Das klappt sehr gut mit grep -v.
Danke euch!
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.