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!
 
Pik-9

Pik-9

Tripel-As
  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
 
A

az_hf0

Grünschnabel
Spitze, Pik-9!

Genau das hab ich gesucht. Sogar gleich mit g für global.
Danke sehr!
 

Ä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

Sucheingaben

bash Script Suche ersetzen url

Oben