Que tal:
sed 's_^\([^>]\+>\)\([[:digit:]]\+\)_<a href=".html">link</a>_' file.txt
-
Estamos usando
_
no formato do padrão de substituiçãosed
, em vez disso,/
como/
está presente na entrada -
^\([^>]\+>\)
encontra os caracteres até>
(inclusive) e os coloca em um grupo -
\([[:digit:]]\+\)
encontra os dígitos mencionados e os coloca em um grupo para que possamos usá-los posteriormente -
O padrão de substituição é
<a href=".html">link</a>
, em queé o primeiro grupo correspondente e
é o segundo grupo correspondente
Exemplo:
$ sed 's_^\([^>]\+>\)\([[:digit:]]\+\)_<a href=".html">link</a>_'<<<'<td nowrap align="right">4683</td>' <td nowrap align="right"><a href="4683.html">link</a></td>
Se não houver dígitos em outro lugar na linha, você poderá simplesmente usar:
sed 's_[[:digit:]]\+_<a href="&.html">link</a>_' file.txt
Exemplo:
$ sed 's_[[:digit:]]\+_<a href="&.html">link</a>_'<<<'<td nowrap align="right">4683</td>'
<td nowrap align="right"><a href="4683.html">link</a></td>