Desculpe, mas seu exemplo echo
não funciona. Parece funcionar porque as aspas duplas ( "
) são interpretadas por bash
e nunca são passadas para sed
.
Observe a diferença entre os dois exemplos a seguir:
$ echo "[email protected]"
[email protected]
$ echo "\"[email protected]\""
"[email protected]"
Seu comando echo
não alimenta o "
para sed
, então parece funcionar porque não há "
para remover na sequência de entrada.
Se você tentar escapar corretamente do "
, o exemplo echo
não funcionará como file
exemplo:
$ echo "\"[email protected]\"" | sed 's/"([^"]*)"/echo "\"[email protected]\"" | sed 's/"\([^"]*\)"//g'
/g'
"[email protected]"
O comando sed
tem dois erros:
- Você está usando a sintaxe de regex estendida. Você pode usá-lo somente se tiver
gnu
sed. A diferença está na maneira como eles usam os parênteses. - Você deve contar as referências anteriores começando por
1
.
Portanto, o comando correto é:
echo "\"[email protected]\"" | sed -E 's/"([^"]*)"//g'
ou, se o seu sed
suportar regex estendido:
$ echo "[email protected]"
[email protected]
$ echo "\"[email protected]\""
"[email protected]"