Suchen und Ersetzen mit regulärem Ausdruck

A

az_hf0

Grünschnabel
Hallo liebe Forenmitglieder,

ich bin auf der Suche nach einer Lösung für ein etwas kniffliges Skript:

Es soll rekursiv in allen Unterverzeichnissen eines Verzeichnis nach allen *.URL-Dateien gesucht werden und in jeder dieser Dateien soll folgendes Pattern ersetzt werden:

URL=link://www/title/tt([0-9]+)/(.*)
durch
URL=link://www/title/tt\1/

Beispiel:
link://www/title/tt1049413/?ref_=nv_sr_1
wird zu
link://www/title/tt1049413/

Ich bin so gestartet und habe probiert:
$ find /<Pfad>/<Dateien> -type f -exec sed -i 's/<alter Begriff>/<neuer Begriff>/g' {} \;


Den regulären Ausdruck und die Kombination mit der rekursiven Suche bekomme ich jedoch leider nicht so einfach hin.
Könntet ihr mir bitte einen Tipp geben?

Vielen Dank!
 
  1. Du kannst find anweisen, nur url Dateien zu suchen:
    Code:
    find /path/to/files -type f -name "*.url" -exec sed ...
  2. Du kannst mit grep -R Dateien rekursiv durchsuchen, ob sie überhaupt einen Link im gesuchten Format enthalten.
Beispiel:
Code:
find /path/to/files -type f -name "*.url" -exec sed -i 's/title\/tt\([0-9]\+\).*/title\/tt\1\//g' {} \;

Viele Grüße,
Pik-9
 
Spitze, Pik-9!

Genau das hab ich gesucht. Sogar gleich mit g für global.
Danke sehr!
 
Hallo!
Wenn ich obigen Befehl wie folgt verwende

Code:
find /Users/Name/Testordner -type f -name "*.tex" -exec sed -i 's/AAAA/BBBB/g' {} \;

so bekomme ich die Fehlermeldung:
sed: 1: "/Users/Name/Test ...": extra characters at the end of l command

Kann mir jemand helfen?
 

Ähnliche Themen

nach regulärem Ausdruck suchen und in Datei schreiben

sed: -e Ausdruck #1, Zeichen 6: unknown option to `s'

suchen und ersetzen, Format erhalten

Nach Muster in Datei suchen und durch Variable ersetzen

Suchen und Ersetzen Skript auf Basis einer externen Datei

Zurück
Oben