Hallo!
Ich habe eine etwas kniffligere Anforderung an sed (oder awk?), die meinen derzeitigen Horizont auch vier Std. nächtlichem googlen übersteigt.

Eingabe:
In einem Text können beliebig verteilt Worte folgender genügsamen regulären Sprache vorkommen:
Code:
<a>.*</a>
Also etwa
Code:
...bla bla bla <a>foo.bar.baz</a> bla bla...
Ausgabe:
Daraus soll gemacht werden:
Code:
...bla bla bla <a href="foo/bar/baz.html">foo.bar.baz</a> bla bla...
Das Problem besteht darin, dass ein Subpattern einmal in einer veränderten Variante eingesetzt werden muss (Punkte durch Slashes substituiert).

Das Resultat
Code:
...bla bla bla <a href="foo.bar.baz.html">foo.bar.baz</a> bla bla...
ist mit sed recht einfach durch
Code:
s/<api>\(.*\)<\/api>/<a href="\1.html">\1<\/a>/g
zu erreichen.
Auf die erste Einsetzung des Musters \1 müsste nochmal eine Substitution angesetzt werden, welche die Punkte durch Slashes ersetzt. Ich habe jedoch keine Ahnung, wie ich das erreichen kann.

Ich bin für jede Idee dankbar!