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
,grep
etc.) 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'