Не зовсім впевнений, що ви намагаєтеся sed
там зробити . Це те, що ви шукаєте?
printf "\x27 \x60\n"
# prints
# ' `
printf "%x %x\n" "''" "'\`"
# prints
# 27 60
Взято з BashFAQ 071
Редагувати
sed
ідеально підходить з будь-яким `
або '
в його регексе. Там, де у вас виникають проблеми, ви отримуєте цих символів через інтерпретатора оболонки, оскільки однозначна цитата та backtick мають особливе значення для оболонки, і їх слід цитувати, якщо вони змушують це зробити sed без башти, кидаючи синтаксичну помилку або маніпулюючи введенням.
Існує три способи цитування спеціальних символів: одинична цитата '
, подвійна цитата "
та зворотна косою рисою \
. Всі вони поводяться трохи інакше. '
цитує все, крім себе, тож ви можете використовувати це для цитування, `
але ні '
. "
цитує все, окрім \
, `
і $
(не має значення тут), тому ви можете використовувати "
для цитування, '
але не `
. \
цитує все, щоб ви могли використовувати це для обох. Можна вкладати ці методи до тих пір, поки ви дотримуєтесь правил цитування прямо (вони інтерпретуються зліва направо).
Щоб зробити конкретніші речі, припустимо, що ви хотіли s/`'/replacement/
в своєму sed
регексе. Існує багато способів зробити це. Нижче наведено два різних приклади.
# 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/"
Просто пам’ятайте про правила цитування та використовуйте найбільш читану версію, яка виконує роботу. QUOTING
Повне пояснення та посилання див. У розділі посібника з bash.
На закінчення я б не використати спеціальний \d
, \x
, і \o
т.д. , тому що вислизає
- Вони є розширеннями GNU, до
sed
яких можуть бути менш портативні, ніж правильно цитовані зразки.
- Це трохи важче читати. Скільки людей знають значення ASCII для верхньої частини голови
'
та `
поза нею?
~
є тильдою.