command um text in allen dateien zu ändern
command um text in allen dateien zu ändern
hallo, habe einige dateien wo ich gerne ein bestimmtes wort ändern muss... gibt es da irgendeinen befehl womit ich alle wörter in allen dateien in einem bestimmten verzeichnis ändern kann ?
- Lord_Carlos
- Beiträge: 5578
- Registriert: 30.04.2006 17:58:52
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: Dänemark
Re: command um text in allen dateien zu ändern
ungetestet, aber versuch es mal hiermit:
sed -i -e 's/hans/peter/g' *.txt
Das sollte gerne alle hans mit peter ersetzten in allen Daten die auf .txt enden.
Mach vorher ein test oder ein backup
sed -i -e 's/hans/peter/g' *.txt
Das sollte gerne alle hans mit peter ersetzten in allen Daten die auf .txt enden.
Mach vorher ein test oder ein backup
Code: Alles auswählen
╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!
-
- Beiträge: 507
- Registriert: 30.12.2016 23:48:51
Re: command um text in allen dateien zu ändern
Bei dieser Kommandozeile hat der Parameter -e kein Argument, ist aber auch nicht erforderlich ihn hier zu nutzen. Und will man die Kommandozeile lediglich testen, sollte man den Parameter -i weglassen, womit die Ausgabe zunächst im Terminal erfolgt, und der Parameter bei Zufriedenheit hinzugefügt werden kann.Lord_Carlos hat geschrieben:sed -i -e 's/hans/peter/g' *.txt
Re: command um text in allen dateien zu ändern
-e hat schon ein Argument, aber -e ist (wie du korrekt schreibst) nicht erforderlich. Ueberhaupt ist -e bei kaum einem sed-Script, das man hier im Forum antrifft, noetig. Oder anders gesagt: Immer wenn es genau ein Scriptargument ist, kann man -e weglassen.breakthewall hat geschrieben:Bei dieser Kommandozeile hat der Parameter -e kein Argument, ist aber auch nicht erforderlich [...]Lord_Carlos hat geschrieben:sed -i -e 's/hans/peter/g' *.txt
Btw, fuer die ganz Genauen: sed -i ist unportabel, wenn auch weit verbreitet. Wenn man das Problem portabel loesen will, dann in der Art:
Code: Alles auswählen
for i in *.txt; do
ed - "$i" <<!
g/foo/s//bar/g
w
!
done
Use ed once in a while!
Re: command um text in allen dateien zu ändern
damit kann man aber nichts ändern wo sonderzeichen vorkommen wie z.b. ein / :/ wie kann ich das machen ? z.b. :breakthewall hat geschrieben:Lord_Carlos hat geschrieben:sed -i -e 's/hans/peter/g' *.txt
- Lord_Carlos
- Beiträge: 5578
- Registriert: 30.04.2006 17:58:52
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: Dänemark
Re: command um text in allen dateien zu ändern
z.B. sed -i -e 's/home\/carlos/media\/raid/g' torrents.state
Das tauscht home/carlos mit media/raid aus.
Das tauscht home/carlos mit media/raid aus.
Code: Alles auswählen
╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!
Re: command um text in allen dateien zu ändern
Siehe: viewtopic.php?f=34&t=165103#p1130914Lord_Carlos hat geschrieben:z.B. sed -i -e 's/home\/carlos/media\/raid/g' torrents.state
Use ed once in a while!
Re: command um text in allen dateien zu ändern
torrents.state ??
- Lord_Carlos
- Beiträge: 5578
- Registriert: 30.04.2006 17:58:52
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: Dänemark
Re: command um text in allen dateien zu ändern
Das war ein Beispiel was ich einfachhalber aus meiner Bash kopiert habe. Es ging ja nur dadrum zu Zeigen wie man die / Zeichen escaped.OldGod78 hat geschrieben:torrents.state ??
Wenn du lieber MeinTageBuch.txt veraendern willst musst du das Angeben.
So schwer ist das nun auch nicht.
Code: Alles auswählen
╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!
Re: command um text in allen dateien zu ändern
@OldGod78: Bitte poste in ganzen Saetzen, wie das hier ueblich ist. Stelle konkrete Fragen und informiere uns ueber die Schritte, die du schon unternommen hast.
Wir pflegen hier im Forum einen sehr konstruktiven Umgang miteinander, den ich auch gerne in diesem Thread sehen wuerde.
Wir pflegen hier im Forum einen sehr konstruktiven Umgang miteinander, den ich auch gerne in diesem Thread sehen wuerde.
Use ed once in a while!
Re: command um text in allen dateien zu ändern
Wenn du das ganze gleich mit einer Backupdatei haben willst, dann bitte folgendes:
sed -i.bak -e 's/hans/peter/g' *.txt
Alle Dateien die er ändert bekommen ein Backup mit der Endung .bak
sed -i.bak -e 's/hans/peter/g' *.txt
Alle Dateien die er ändert bekommen ein Backup mit der Endung .bak
Debian-Nutzer
ZABBIX Certified Specialist
ZABBIX Certified Specialist