Por que este sed não está funcionando?

0

Eu quero alterar massivamente algumas referências css em mais de 200 arquivos html. A maioria dos arquivos é HTML estático gerado automaticamente. Agora, preciso alterar a localização de alguns arquivos css. Então, eu usei esse sed:

sed -s 's/href="*_css/href="css/g' ./12*.htm*

A fonte é assim:

href="11.2.Lab%20_css/styles.css"
href="10.2.Lab%20_css/styles.css"

Mas executando o sed, nada acontece!

Onde está o erro?

    
por Peter 01.10.2014 / 16:30

1 resposta

2

É confuso, mas * corresponde a uma string arbitrária em bash , enquanto em expressões regulares * repete o padrão anterior um número arbitrário de vezes.

Então você precisa de .* em vez de * (corresponde a qualquer caractere qualquer número de vezes); sua string especifica um número arbitrário de aspas duplas seguidas de sublinhado.

Observe que os pontos nas strings de origem não estão relacionados ao . na expressão regular, que corresponde a qualquer caractere, incluindo a si mesmo.

    
por 01.10.2014 / 16:36

Tags