torr para substituir o URL do texto pelo html url

0

Eu tenho um monte de URL em um arquivo de texto. Como o Firefox parece incapaz de carregar esses URLs diretamente, eu preciso convertê-los em HTML.

Tentar com sed não funciona:

sed -e 's/^(.*)$/<a href=""><\/a><br>/g' myfile.txt

Mensagem de erro retornada (traduzida, pode não parecer exatamente assim nos sistemas em inglês):

sed: -e expression n°1, char 33: invalid reference  in right side of the command 's'

Eu simplesmente me pergunto por quê?

URLs são assim:

https://unix.stackexchange.com/questions/378496/sed-to-replace-text-url-to-html-url

alguns podem conter estes caracteres:% & / \ _ - =:

E parece que recebi um caractere "linebreak" no final da linha, antes da quebra real da linha, assim incluída na instrução. *. Deve ser porque o arquivo foi criado em um ambiente Windows.

    
por s.k 14.07.2017 / 17:42

2 respostas

3

Se você quiser agrupar partes de um regex, use \(\) ou use a sintaxe de expressão regular estendida fornecendo a opção -E para sed .

No seu caso, não é necessário, já que durante todo o jogo você pode usar & no substituto:

sed 's/.*/<a href="&"><\/a><br>/' myfile.txt

Observe que você também pode descartar ^ e $ , pois o * ganancioso faz a correspondência cobrir toda a linha.

    
por 14.07.2017 / 17:46
-1

Você está usando / em sua expressão sed como separador, capturando texto com / , por isso ele falha.

Teste 's@^(.*)$@<a href=""><\/a><br>@g' , assumindo que não há links para o mailto que você deseja converter; -)

Você também pode usar 's!^(.*)$!<a href=""><\/a><br>!g'

    
por 14.07.2017 / 17:48

Tags