Non del tutto sicuro di cosa stai provando a fare sed
Là. E 'questo quello che stai cercando?
printf "\x27 \x60\n"
# prints
# ' `
printf "%x %x\n" "''" "'\`"
# prints
# 27 60
Preso da BashFAQ 071
modificare
sed
sta perfettamente bene con entrambi `
o '
nella sua espressione regolare. Dove si incontrano problemi si ottengono quei caratteri attraverso l'interprete della shell poiché sia la virgoletta singola che l'apice hanno un significato speciale per la shell, e devono essere citati se devono renderli in sed senza bash generando un errore di sintassi o maneggiando l'input.
Esistono tre modi per citare caratteri speciali: virgolette singole '
, doppia citazione "
e backslash \
. Si comportano tutti in modo un po 'diverso. '
cita tutto tranne se stesso, quindi puoi usare questo per citare `
ma no '
. "
cita tutto tranne \
, `
, e $
(irrilevante qui), quindi puoi usare "
per citare '
ma no `
. \
cita tutto per poterlo usare per entrambi. È possibile annidare questi metodi finché si mantengono dritte le regole di quotatura (vengono interpretate da sinistra a destra).
Per rendere le cose più concrete, supponi di volerlo s/`'/replacement/
nel tuo sed
regex. Ci sono molti modi per farlo. Di seguito sono riportati due esempi diversi.
# 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/"
Tieni a mente le regole di quotazione e usa la versione più leggibile per completare il lavoro. Vedere il QUOTING
sezione nel manuale di bash per una spiegazione completa e riferimento.
Come nota finale, eviterei di usare lo speciale \d
, \x
, \o
ecc. fugge perché
- Sono estensioni GNU a
sed
che può essere meno portabile di modelli correttamente citati.
- È un po 'più difficile da leggere. Quante persone conoscono i valori ASCII per
'
e `
dalla cima delle loro teste?
~
è una tilde.