Automatisches Ersetzen von Textinhalten, die "/" enthalten

Lorzel

Mitglied
Thread Starter
Dabei seit
01.06.2021
Beiträge
397
Punkte Reaktionen
57
Hallo!

in meinem Beitrag https://www.macuser.de/threads/suchen-und-ersetzen-in-mehreren-dateien.893585/
hatte ich mit Mitgliedern zusammen herausgefunden, dass man mittels

Code:
sed -i '' 's/old/new/' ~/Desktop/aaa/*.tex

mittels Terminal Textinhalte mehrerer Dateien ersetzen kann.

Nun habe ich das Problem, dass in "old" und "new" leider "/" vorkommen. Gibt es eine Möglichkeit, auch solche Textinhalte, die Terminal-Befehls-Trennzeichen enthalten, zu ersetzen?
Beispiel zum besseren Verständnis:
Zu ersetzendes: BlaBla/BlubbBlubb
Ersetzendes: BliBli/BlebbBlebb
 

lisanet

Aktives Mitglied
Dabei seit
05.12.2006
Beiträge
6.425
Punkte Reaktionen
7.080
Hallo!

in meinem Beitrag https://www.macuser.de/threads/suchen-und-ersetzen-in-mehreren-dateien.893585/
hatte ich mit Mitgliedern zusammen herausgefunden, dass man mittels

Code:
sed -i '' 's/old/new/' ~/Desktop/aaa/*.tex

mittels Terminal Textinhalte mehrerer Dateien ersetzen kann.

Nun habe ich das Problem, dass in "old" und "new" leider "/" vorkommen. Gibt es eine Möglichkeit, auch solche Textinhalte, die Terminal-Befehls-Trennzeichen enthalten, zu ersetzen?
Beispiel zum besseren Verständnis:
Zu ersetzendes: BlaBla/BlubbBlubb
Ersetzendes: BliBli/BlebbBlebb

zwei Möglichkeiten:

a) ändere das Trennzeichen von / in z.Bsp |

b) escape im Such- und Ersatztext das / mit \. Willst du ein \ escapen, dann wird das zu \\

Also

a)
Code:
a) sed -i "" 's|Such/text|Ersatztext/mit/slash|' ...

b)
Code:
b) sed -i "" 's/Such\/text/Ersatztext\/mit\/slash/' ...

Tipp:

Es empfiehlt sich den Schalter g anzuhängen, damit alle Vorkommen in der Datei ersetzt werden und nicht nur der erste, also z.Bsp

Code:
a) sed -i "" 's|Such/text|Ersatztext/mit/slash|g' ...
 
Oben Unten