Как в linux получить десятичный/шестнадцатеричный/октовый код ascii из char или ascii char из десятичного/шестнадцатеричного/октового кода.
Я видел в руководстве пользователя gnu sed, что я могу использовать \d# \o# \x# для указания символа, но я не уверен, как это использовать.
Если у кого-то есть лучший способ передать символы ` и ', пожалуйста, помогите.
Я хочу sed с символом обратного знака '`' и символом одинарной кавычки ''.
sed '/`/p'
это не работает
sed '/\'/p'
sed '/`/p'
Не совсем уверен, что вы пытаетесь сделать с sed
там. Это то, что вы ищите?
printf "\x27 \x60\n"
# prints
# ' `
printf "%x %x\n" "''" "'\`"
# prints
# 27 60
Взято из BashFAQ 071
Редактировать
sed
прекрасно сочетается с `
или '
в регулярном выражении. Вы сталкиваетесь с проблемами при получении этих символов через интерпретатор оболочки, поскольку и одинарная кавычка, и обратная кавычка имеют особое значение для оболочки и должны быть заключены в кавычки, если они должны сделать это для sed без bash, выдающего синтаксическую ошибку или искажающего ввод.
Есть три способа заключения специальных символов в кавычки: одинарная кавычка '
, двойная кавычка "
и обратная косая черта \
. Все они ведут себя немного по-разному. '
цитирует все, кроме самого себя, поэтому вы можете использовать это, чтобы цитировать `
, но не '
. "
цитирует все, кроме \
, `
и $
(здесь это не имеет значения), поэтому вы можете использовать "
для цитирования '
, но не `
. \
цитирует все, чтобы вы могли использовать это для обоих. Эти методы можно вкладывать друг в друга, если вы соблюдаете правила цитирования (они интерпретируются слева направо).
Чтобы сделать вещи более конкретными, предположим, что вы хотите 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 для полного объяснения и справки.
И последнее замечание: я бы не стал использовать специальные escape-последовательности \d
, \x
, \o
и т. д., потому что
sed
, которые могут быть менее переносимыми, чем правильно цитируемые шаблоны.'
и `
навскидку?