Como extrair uma substring e adicioná-la à string original com sed?

0

Eu estou tentando escrever um script sh que recebe uma string como entrada, extrai uma substring específica e a adiciona após uma expressão especificada na string de entrada. Eu tentei muito com sed -i'N ... mas nada funciona.

Este é um exemplo de string de entrada:

<img src="images/Button-7.jpg" width="251" height="129" border="0" alt=""></a></td>

Isso é o que estou tentando obter como saída:

<img src="images/Button-7.jpg" name="Button-7" width="251" height="129" border="0" alt=""></a></td>

Seguindo os trabalhos. Mas tenho que declarar todos os botões manualmente.

VarA='Button-7.jpg'
VarB='Button-7.jpg" name="Button-7'

sed "s/${VarA}/${VarB}/g" index.html > temp.html
mv temp.html index.html
    
por philipp5054 08.02.2015 / 16:46

1 resposta

2

Parece-me que você precisa empregar captura de grupo e referências anteriores para que isso funcione bem. Brincando um pouco com esses conceitos, eu apresentei o seguinte que funcionou bem para o que eu entendo que seu caso de uso seja:

sed 's#src="images/\(.*\).jpg"#& name=""#'

As coisas interessantes aqui são:

  1. Usando # como o separador em vez do normal / . Isso facilita o raciocínio, porque não requer escaçar as barras no padrão.
  2. Capturando a entrada em um grupo usando os parênteses (com escape).
  3. Reutilizar toda a correspondência com & (dica do chapéu: G-man).
  4. Referenciando novamente o grupo capturado no texto de substituição ( ).
por 08.02.2015 / 19:15