torr - encontre e substitua o texto contendo “/”

0

Como posso pesquisar e substituir texto que contém / com sed?

Atualmente, uso o seguinte comando que não funciona

sed -i "s/queue_directory = /var/spool/postfix-secondary/queue_directory = /var/spool/postfix-$newnumber/g" /etc/postfix-$newnumber/main.cf
    
por Teddy291 03.07.2015 / 00:25

1 resposta

4

Uma abordagem é escolher um delimitador diferente além de / . Por exemplo, usando | :

sed -ie "s|queue_directory = /var/spool/postfix-secondary|queue_directory = /var/spool/postfix-$newnumber|g" /etc/postfix-$newnumber/main.cf

Outra abordagem é a fuga de barra invertida das outras barras:

sed -ie "s/queue_directory = \/var\/spool\/postfix-secondary/queue_directory = \/var\/spool\/postfix-$newnumber/g" /etc/postfix-$newnumber/main.cf

Mais duas sugestões para seu uso específico. Primeiro, eu não acho que você precise do flag g, a menos que você espere que a substituição apareça várias vezes na mesma linha. Em segundo lugar, se você está apenas tentando alterar uma diretiva, você poderia alterá-la, independentemente do valor anterior. Por exemplo:

sed -ie "s|^queue_directory =.*|queue_directory = /var/spool/postfix-$newnumber|" /etc/postfix-$newnumber/main.cf
    
por 03.07.2015 / 02:40

Tags