usando sed para localizar e substituir, não adicionando [duplicado]

1

Eu tenho um texto simples de URLs no stdout. Parte da URL é exibida abaixo.

https://somedomain./xx?t=s&u=random other text

Eu quero mudar isso usando sed ou algo da linha de comando para ler

https://somedomain./xx?t=l&u=random other text

Eu usei sed -e 's/s&/l&/'

Em vez de substituir s& por l& , estou obtendo ls& na string. Há algo de errado com o meu comando?

    
por crashoveride 02.03.2017 / 12:45

1 resposta

3

Você deve escapar do "&" caractere do lado direito do comando s adicionando um "\" antes dele. Sem isso, "&" é especial e é substituído pelo que é correspondido pela expressão regular. No lado esquerdo, "&" não é especial e é garantido que não é especial. Você não quer escapar, pois & nunca seria especial, \& não é garantido e o que corresponde não é especificado.

Então:

sed -i 's/s&/l\&/g' file.txt
    
por 02.03.2017 / 12:54

Tags