Como substituir caracteres de maiúsculas para minúsculas usando o bash, considerando que esses caracteres estão dentro de uma tag href?

1

Eu tenho muitos arquivos com URLs de casos mistos que eu preciso converter em minúsculas, alterando apenas os links dentro dos arquivos e deixando o restante do conteúdo intacto. Descobri que isso é possível usando expressões regulares no Notepad ++:

Find in Files

Search: (href=['"])(.+)(['"])

Replace to: \L

No entanto, preciso fazer isso usando o bash ou o vim. Como eu pude fazer isso? Além disso, como aplicá-lo a vários arquivos em várias pastas?

    
por Fabio Romeo 15.09.2016 / 16:46

1 resposta

2

No Bash:

sed -i 's/<a href.*\">/\L&/' file.txt

No VIM:

:%s/<a href.*\">/\L&/

Eu não tinha certeza se você queria apenas que o FQDN fosse alterado, ou a URL inteira, ou se cada âncora estivesse em uma linha própria, isso deveria cobrir qualquer situação. Isso só vai mudar o URL ancorado e não o texto âncora (eu estou supondo que é o que você está pedindo)

Editar:

Se você deseja aplicar isso a vários arquivos em pastas diferentes, cd ao diretório base que possui todos os arquivos e subpastas com arquivos que deseja editar e execute o seguinte comando:

find . -type f -name "*.html" | while read line; do sed -i 's/<a href.*\">/\L&/' $line; done

Isso irá procurar por quaisquer arquivos em seu diretório atual (aquele para o qual você deve ter cd ed) e subdiretórios que terminem com .html e executarão o comando sed supracitado. (ajuste a extensão do arquivo como achar melhor).

    
por 15.09.2016 / 18:23