Como coincidir com uma única citação em sed
Pergunta
Como coincidir com uma única citação em sed se a expressão está entre aspas simples:
sed -e '...'
Por exemplo necessidade de coincidir com este texto:
'foo'
Solução
Você pode usar:
"texta'textb" (APOSTROPHE inside QUOTATION MARKs)
ou
'texta'\''textb' (APOSTROPHE text APOSTROPHE, then REVERSE SOLIDUS, APOSTROPHE, then APOSTROPHE more text APOSTROPHE)
Eu usei nomes de caracteres Unicode. Solidus reverso é mais comumente conhecida como barra invertida.
Neste último caso, você fecha o apóstrofo, então desembolsar-citar o seu apóstrofo com uma barra invertida, em seguida, abrir outra apóstrofe para o resto do texto.
Outras dicas
Como observado nos comentários para a questão, não é realmente sobre o sed, mas a forma de incluir uma citação em uma string em um shell (por exemplo, bash).
Para esclarecer uma resposta anterior, você precisa escapar a citação com uma barra invertida, mas você não pode fazer isso dentro de uma expressão entre aspas simples. A partir da página man bash:
encerrando caracteres entre aspas simples preserva o valor de cada literal caracteres dentro das aspas. Uma única Citação não pode ocorrer entre única citações, mesmo quando precedido por um barra invertida.
Portanto, você precisa para terminar a expressão citada, inserir a citação escapou, e iniciar uma nova expressão citada. remoção de citação do shell não adiciona espaços extras, então na verdade você começa concatenação.
Assim, para responder à pergunta original de como aspas simples a expressão 'foo', você faria algo assim:
sed -e '...'\''foo'\''...'
(onde '...' é o resto da expressão sed).
No geral, por uma questão de legibilidade, você estaria muito melhor alterar as aspas para aspas duplas, se possível:
sed -e "...'foo'..."
[Como exemplo do potencial pesadelo de manutenção da primeira abordagem (aspas simples), nota como sintaxe de StackOverflow destacando cores as aspas, barras invertidas e outros textos - definitivamente não é correto.]