ubuntuusers.de

RegEx-Formulierung

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

ExSi

Anmeldungsdatum:
20. Oktober 2015

Beiträge: 12

Folgendes Problem. Ich habe Daten in folgender Form vorliegen

title = {Beliebigen Titel hier einfügen},
title = {Hier noch ein anderer Titel},

Nun muss ich aber vor den Titel noch ein Befehl einfügen, dass es im Endeffekt

title = {\href{run:./ganzwichtig.pdf}{Der Titel wäre richtig}}

formatiert wird. Nun verzweifle ich aber bei dem Versuch dieses in einen richtigen sed-Befehl zu formulieren. Bei meinem Versuch,

"/ \{ .*? \} /p"

kam aber folgende Meldung

sed: 1: "/\{.*?\}/p": RE error: invalid repetition count(s)

Könnte mir jemand sagen was daran falsch ist und wie es richtig geht? LG ExSi

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13205

ExSi schrieb:

Bei meinem Versuch,

"/ \{ .*? \} /p"

kam aber folgende Meldung

sed: 1: "/\{.*?\}/p": RE error: invalid repetition count(s)

Könnte mir jemand sagen was daran falsch ist und wie es richtig geht?

Du hast durch das Vorschalten mit \ eine harmlose geschweifte Klammer in ein Metazeichen verwandelt, das benutzt wird um Wiederholungen anzuzeigen:

1
2
$ echo 'fobfoo' | sed 's#o\{2,3\}#<&>#'
fobf<oo>

Wie wäre es denn mit dieser Lösung?

1
2
3
4
5
6
$ sed 's#}#}}#; s#{#{\\href{run:./ganzwichtig.pdf}{#' <<TEXT
title = {Beliebigen Titel hier einfügen},
title = {Hier noch ein anderer Titel},
TEXT
title = {\href{run:./ganzwichtig.pdf}{Beliebigen Titel hier einfügen}},
title = {\href{run:./ganzwichtig.pdf}{Hier noch ein anderer Titel}},

ExSi

(Themenstarter)

Anmeldungsdatum:
20. Oktober 2015

Beiträge: 12

Tausend Dank!

Die Lösung ist sogar noch besser, dir noch einen Schönen Montagabend!

LG ExSi

ExSi

(Themenstarter)

Anmeldungsdatum:
20. Oktober 2015

Beiträge: 12

Ich muss hier leider doch nochmal kurz einhaken.

Da ich den Code doch noch etwas verändern muss wollte muss ich mich nochmal an die RegEx ranwagen.

Entweder ich habe die falschen Suchbegriffe eingegeben oder es gibt keine gute Erklärung wie

$ sed 's#}#}}#; s#{#{\\href{run:./ganzwichtig.pdf}{#' <<TEXT

genau funktioniert mit den Rautezeichen. Kann mir einer die genaue Bedeutung der Rautezeichen oder ggf. eine Referenz geben?

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11260

Wohnort: München

ExSi schrieb:

Kann mir einer die genaue Bedeutung der Rautezeichen oder ggf. eine Referenz geben?

Man kann in den Ersetzungsbefehlen von sed auch andere Trennzeichen als den gewohnten Slash verwenden. Das hat dann den Vorteil, dass man den Slash nicht escapen muss, wenn man ihn im Such- oder Ersetzungsstring verwendet.

Statt

1
$ sed 's#}#}}#; s#{#{\\href{run:./ganzwichtig.pdf}{#' <<TEXT

könntest du auch

1
$ sed 's/}/}}/; s/{/{\\href{run:.\/ganzwichtig.pdf}{/' <<TEXT

schreiben.

Antworten |