Não tenho certeza absoluta do que você está tentando fazer com sed
. É isso que você está procurando?
printf "\x27 \x60\n"
# prints
# ' '
printf "%x %x\n" "''" "'\'"
# prints
# 27 60
Extraído de BashFAQ 071
Editar
sed
está perfeitamente bem com '
ou '
em seu regex. Onde você está encontrando problemas é obter esses caracteres através do interpretador de shell, já que tanto aspas simples quanto backtick têm um significado especial para o shell, e devem ser citadas se forem feitas para sed sem bash jogando um erro de sintaxe ou desconfigurando a entrada.
Existem três formas de citar caracteres especiais: aspas simples '
, aspas duplas "
e aspas invertidas \
. Todos eles se comportam de maneira um pouco diferente. '
cita tudo, exceto ele mesmo, portanto, você pode usar isso para citar '
, mas não '
. "
cita tudo, exceto \
, '
e $
(irrelevante aqui), então você pode usar "
para citar '
, mas não '
. \
cita tudo para que você possa usar isso para ambos. É possível aninhar esses métodos desde que você mantenha as regras de cotação em linha reta (elas são interpretadas da esquerda para a direita).
Para tornar as coisas mais concretas, suponha que você queria s/''/replacement/
em sua sed
regex. Existem muitas maneiras de fazer isso. Dois exemplos diferentes são dados abaixo.
# concatenation of single-quoted s/', backslash-quoted ', and
# single-quoted remainder of the command
sed -e 's/''\''/replacement/'
# one double-quoted string quotes the single-quote, but an
# additional backslash is needed to quote the backtick
sed -e "s/\''/replacement/"
Apenas mantenha as regras de cotação em mente e use a versão mais legível para realizar o trabalho. Veja a seção QUOTING
no manual bash para uma explicação completa e referência.
Como nota final, eu evitaria usar as saídas especiais \d
, \x
, \o
etc. porque
- São extensões GNU para
sed
, que podem ser menos portáteis do que padrões adequadamente citados. - É um pouco mais difícil de ler. Quantas pessoas sabem os valores ASCII para
'
e'
do topo de suas cabeças?