command um text in allen dateien zu ändern

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
OldGod78
Beiträge: 190
Registriert: 20.04.2016 20:59:51
Kontaktdaten:

command um text in allen dateien zu ändern

Beitrag von OldGod78 » 28.05.2017 17:41:22

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 ?

Benutzeravatar
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

Beitrag von Lord_Carlos » 28.05.2017 17:58:07

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 :)

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

OldGod78
Beiträge: 190
Registriert: 20.04.2016 20:59:51
Kontaktdaten:

Re: command um text in allen dateien zu ändern

Beitrag von OldGod78 » 28.05.2017 18:10:36

ah danke

breakthewall
Beiträge: 507
Registriert: 30.12.2016 23:48:51

Re: command um text in allen dateien zu ändern

Beitrag von breakthewall » 28.05.2017 18:44:14

Lord_Carlos hat geschrieben:sed -i -e 's/hans/peter/g' *.txt
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.

Benutzeravatar
Meillo
Moderator
Beiträge: 9230
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: command um text in allen dateien zu ändern

Beitrag von Meillo » 31.05.2017 08:39:26

breakthewall hat geschrieben:
Lord_Carlos hat geschrieben:sed -i -e 's/hans/peter/g' *.txt
Bei dieser Kommandozeile hat der Parameter -e kein Argument, ist aber auch nicht erforderlich [...]
-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.


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!

OldGod78
Beiträge: 190
Registriert: 20.04.2016 20:59:51
Kontaktdaten:

Re: command um text in allen dateien zu ändern

Beitrag von OldGod78 » 01.06.2017 19:23:49

breakthewall hat geschrieben:
Lord_Carlos hat geschrieben:sed -i -e 's/hans/peter/g' *.txt
damit kann man aber nichts ändern wo sonderzeichen vorkommen wie z.b. ein / :/ wie kann ich das machen ? z.b. :

DeletedUserReAsG

Re: command um text in allen dateien zu ändern

Beitrag von DeletedUserReAsG » 01.06.2017 19:24:57

Escapen.

OldGod78
Beiträge: 190
Registriert: 20.04.2016 20:59:51
Kontaktdaten:

Re: command um text in allen dateien zu ändern

Beitrag von OldGod78 » 01.06.2017 19:39:50

?

DeletedUserReAsG

Re: command um text in allen dateien zu ändern

Beitrag von DeletedUserReAsG » 01.06.2017 19:41:43

\?

Benutzeravatar
Meillo
Moderator
Beiträge: 9230
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: command um text in allen dateien zu ändern

Beitrag von Meillo » 01.06.2017 19:52:54

LOL :THX:
Use ed once in a while!

OldGod78
Beiträge: 190
Registriert: 20.04.2016 20:59:51
Kontaktdaten:

Re: command um text in allen dateien zu ändern

Beitrag von OldGod78 » 01.06.2017 19:53:20

lol

OldGod78
Beiträge: 190
Registriert: 20.04.2016 20:59:51
Kontaktdaten:

Re: command um text in allen dateien zu ändern

Beitrag von OldGod78 » 01.06.2017 19:54:23

wie ?

Benutzeravatar
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

Beitrag von Lord_Carlos » 01.06.2017 22:57:17

z.B. sed -i -e 's/home\/carlos/media\/raid/g' torrents.state
Das tauscht home/carlos mit media/raid aus.

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

Benutzeravatar
Meillo
Moderator
Beiträge: 9230
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: command um text in allen dateien zu ändern

Beitrag von Meillo » 01.06.2017 23:35:56

Lord_Carlos hat geschrieben:z.B. sed -i -e 's/home\/carlos/media\/raid/g' torrents.state
Siehe: viewtopic.php?f=34&t=165103#p1130914
Use ed once in a while!

OldGod78
Beiträge: 190
Registriert: 20.04.2016 20:59:51
Kontaktdaten:

Re: command um text in allen dateien zu ändern

Beitrag von OldGod78 » 02.06.2017 18:19:40

torrents.state ??

Benutzeravatar
Meillo
Moderator
Beiträge: 9230
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: command um text in allen dateien zu ändern

Beitrag von Meillo » 02.06.2017 18:55:53

berge.aussicht !!
Use ed once in a while!

Benutzeravatar
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

Beitrag von Lord_Carlos » 02.06.2017 19:05:02

OldGod78 hat geschrieben:torrents.state ??
Das war ein Beispiel was ich einfachhalber aus meiner Bash kopiert habe. Es ging ja nur dadrum zu Zeigen wie man die / Zeichen escaped.
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!

Benutzeravatar
Meillo
Moderator
Beiträge: 9230
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: command um text in allen dateien zu ändern

Beitrag von Meillo » 02.06.2017 20:11:29

@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.
Use ed once in a while!

Colttt
Beiträge: 3012
Registriert: 16.10.2008 23:25:34
Wohnort: Brandenburg
Kontaktdaten:

Re: command um text in allen dateien zu ändern

Beitrag von Colttt » 02.06.2017 23:37:06

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
Debian-Nutzer :D

ZABBIX Certified Specialist

Antworten