Duas dicas:
-
Você não pode escapar de uma única citação dentro de uma string entre aspas simples. Então você tem que fechar a cotação, adicionar uma cotação de escape, em seguida, abra as aspas novamente. Ou seja:
'foo'\''bar'
, que é dividido como:-
'foo'
cotadofoo
-
\'
escape'
-
'bar'
cotadobar
rendendo
foo'bar
. -
- (opcional) Você não precisa necessariamente usar
/
in sed. Acho que usar/
e\
na mesma expressão sed dificulta a leitura.
Por exemplo, para remover as aspas deste arquivo:
$ cat /tmp/f
aaa"bbb"'ccc'aaa
Considerando minhas duas dicas acima, o comando que você pode usar para remover aspas duplas e simples é:
$ sed -e 's|["'\'']||g' /tmp/f
Com base na minha primeira dica, o shell reduz o segundo argumento do sed
(isto é, a string após o -e
) para s|["']||g
e passa essa string para sed.
Com base na minha segunda dica, o sed trata o mesmo que s/['"]//g
.
Isso significa
remove all characters matching either
'
or"
(i.e., replace them with nothing)
Você provavelmente precisa de algo mais complexo do que isso para fazer o que quiser, mas é um começo. Espero que ajude.