Você pode substituir a barra invertida por um espaço, conforme mostrado no resultado do exemplo:
sed 's/\/ /g'
ou você pode removê-lo como mostra no seu código:
sed 's/\//g'
Caracteres especiais
Existem possíveis problemas com o escape de barras invertidas para cancelar seu significado especial. Barra invertida é um caractere especial usado para escapar tanto em um shell quanto em expressões regulares.
O comando que você digita na linha de comando do shell ou em um script é primeiro processado pelo shell, que interpreta o significado especial dos caracteres e seu escape. O resultado é então passado para o comando a ser executado (como sed ), que executa sua própria interpretação dos caracteres. Quando você está construindo um comando, o procedimento mental é o oposto: primeiro adicione o escape para o regex e adicione o escape para o shell.
-
Em um regex (a entrada para comandos como
sed,grepetc.) pode ser escapada por barra invertida assim:\e você também pode usar o conjunto expressão[\]como você usou porque a contrabarra perde seu significado especial. -
Em um shell (como
bash), você pode escapar de barra invertida por barra invertida. Então, em vez de\, escreva\. Colocar a string entre aspas duplas"torna o comportamento de barra invertida mais complicado < 1 > / sup> , mas a contrabarra dupla ainda produzirá uma única barra invertida. Colocar a string entre aspas simples'faz com que cada caractere seja tratado literalmente, exceto'.
Se você quiser usar aspas duplas , poderá usar uma das seguintes opções:% sed "s/\\//g" - Escape \ by \ no shell e escape a cada \ na regex novamente. Na verdade, as aspas duplas não são necessárias nesse caso, porque todo caractere especial é apropriadamente evitado.
sed "s/[\]//g" - Escape no shell por uma barra invertida \ e na regex use um conjunto [ ] .
sed "s/[\]//g" - Sim, seu exemplo deve funcionar em um ambiente compatível com POSIX! Entre aspas duplas \ representa a si mesmo, a menos que preceda um caractere especial no contexto de aspas duplas: $'"\ ou newline. Parece que no seu caso o shell ou o sed não seguem o padrão POSIX.
Com aspas simples , você também pode usar a string como usou ou de maneira mais curta:
sed 's/[\]//g' e sed 's/\//g'