Barra e barra invertida no sed [duplicado]

27

Eu quero usar sed para alterar uma barra em uma barra invertida e uma barra, ou seja, / - > %código%. Mas não funciona. Aqui um pequeno exemplo:

#!/bin/bash
TEST=/etc/hallo
echo $TEST
echo $TEST | sed "s/hallo/bello/g"
echo $TEST | sed "s/\//\\//g"

A saída das três primeiras linhas é assumida. Mas o último não funciona. Por quê? Como corrigir a última parte?

    
por kristian 24.06.2015 / 15:20

2 respostas

54

Use aspas simples para a expressão que você usou:

sed 's/\//\\//g'

Nas aspas duplas, \ tem um significado especial, por isso você precisa invertê-lo:

sed "s/\//\\\//g"

Mas é mais limpo mudar o delimitador:

sed 's=/=\/=g'
sed "s=/=\\/=g"
    
por 24.06.2015 / 15:24
11

Tente:

sed 's/\//\\//g'

ou usando outro delimitador para impedir que você escape de uma barra:

sed 's,/,\/,g'
    
por 24.06.2015 / 15:24