Sed Substituir em torno de conteúdo numérico

1

Estou modificando uma saída html

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

Eu gostaria de substituir todas as ocorrências no documento que correspondem a este padrão, em que 4683 pode ser qualquer número dado que varia em comprimento

para que essas linhas pareçam

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

Acho que estou procurando por algo assim

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

Eu entendo que o Regex não pode ser incluído como substituído ou estruturado corretamente

    
por koahv 15.07.2015 / 12:23

2 respostas

-1

Que tal:

sed 's_^\([^>]\+>\)\([[:digit:]]\+\)_<a href=".html">link</a>_' file.txt
  • Estamos usando _ no formato do padrão de substituição sed , 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>
    
por 15.07.2015 / 12:31
-1

Tente isso, sed -ri 's/([0-9]+)/<a href=\"&.html\">link<\/a>/g' index.html

    
por 15.07.2015 / 14:14

Tags