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.