Sed: substitui o texto mantendo a ocorrência do dígito

2

Eu tenho algum texto como:

Blablabla <b>[intlink id="</b>2204<b>" type="page"] Blalala

Eu quero substituí-lo por remover o </b> e <b> , mantendo o id="number" . Então deve resultar como:

Blablabla <b>[intlink id="2204" type="page"] Blalala

Eu tento com:

sed -i 's@id="</b>[[:digit:]]\+<b>"@id="{1}"@g' ~/edit.txt
Blablabla <b>[intlink id="{1}" type="page"] Blalala

Eu também tento com:

sed -i 's@id="</b>[[:digit:]]\+<b>"@id="\1"@g' ~/edit.txt

Mas eu recebo:

Blablabla <b>[intlink id="" type="page"] Blalala

Então, como posso manter o texto do número de identificação no dígito regex?

    
por shakaran 08.09.2015 / 05:17

1 resposta

4

é a sintaxe certa para se referir ao grupo de captura 1; \1 significa que você quer o texto literal . Portanto, altere \1 para e, em seguida, coloque parênteses na parte que deseja capturar. Isso deve funcionar:

sed -i 's@id="</b>\([[:digit:]]\+\)<b>"@id=""@g' ~/edit.txt
    
por 08.09.2015 / 05:31