Не совсем уверен , что вы пытаетесь сделать с sed
там. Это то, что вы ищите?
printf "\x27 \x60\n"
# prints
# ' `
printf "%x %x\n" "''" "'\`"
# prints
# 27 60
Взято с BASFAQ 071
редактировать
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 для
'
и `
вне головы?