Você precisa escapar (com contrabaixo \
) todas as barras substituídas /
e todas as barras invertidas \
separadamente, portanto:
$ echo "/tmp/test/folder1/test.txt" | sed 's/\//\\//g'
\/tmp\/test\/folder1\/test.txt
mas isso é bastante ilegível.
No entanto, sed
permite usar quase qualquer caractere como um separador em vez de /
, isso é especialmente útil quando se deseja substituir a barra /
, como no seu caso, usando, por exemplo, semicolon ;
como separador, o comando se tornaria mais simples:
echo "/tmp/test/folder1/test.txt" | sed 's;/;\/;g'
Outros casos:
-
Se alguém quiser ficar com a barra como separador e usar aspas duplas, todas as barras invertidas com escape precisarão ser escapadas mais uma vez para preservar seus valores literais:
echo "/tmp/test/folder1/test.txt" | sed "s/\//\\\//g"
-
se não quisermos citações, será necessária outra barra invertida:
echo "/tmp/test/folder1/test.txt" | sed s/\//\\\//g