Sed Замените числовое содержимое

Я изменяю вывод html

<td nowrap align="right">4683</td> 

Я хотел бы заменить все вхождения в документе, соответствующем этому шаблону, где 4683 может быть любым заданным числом, изменяющимся по длине

поэтому эти строки выглядят

 <td nowrap align="right"><a href="4683.html">link</a></td> 

Я думаю, что я ищу что-то вроде этого

 sed -i 's/align="right">/([0-9]*)/<\/td>/align="right"><a href="4683.html">link<\/a><\/td>/g' index.html 

Я понимаю, что в Regex не могут быть включены ссылочные или структурированные правильно

Как насчет :

 sed 's_^\([^>]\+>\)\([[:digit:]]\+\)_\1<a href="\2.html">link</a>_' file.txt 
  • Мы используем _ в формате шаблона подстановки sed вместо / as / присутствует во входе

  • ^\([^>]\+>\) находит символы до > (в том числе) и помещает их в группу

  • \([[:digit:]]\+\) находит указанные цифры и помещает их в группу, чтобы мы могли использовать их позже

  • Шаблон замены – \1<a href="\2.html">link</a> где \1 – первая согласованная группа, а \2 – вторая согласованная группа

    Пример :

     $ sed 's_^\([^>]\+>\)\([[:digit:]]\+\)_\1<a href="\2.html">link</a>_'<<<'<td nowrap align="right">4683</td>' <td nowrap align="right"><a href="4683.html">link</a></td> 

Если в другом месте строки нет цифр, вы можете просто использовать:

 sed 's_[[:digit:]]\+_<a href="&.html">link</a>_' file.txt 

Пример :

 $ 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> 

Попробуй это,
sed -ri 's/([0-9]+)/<a href=\"&.html\">link<\/a>/g' index.html