Как в linux получить ' quote` back-tic через shell в sed

Как в linux получить ' quote` back-tic через shell в sed
Как в linux получить ' quote` back-tic через shell в sed - joshuafuller @ Unsplash

Как в 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 и т. д., потому что

  • Это расширения GNU для sed, которые могут быть менее переносимыми, чем правильно цитируемые шаблоны.
  • Читать немного сложнее. Сколько людей знают значения ASCII для ' и ` навскидку?

NevaDev, 22 мая 2023 г., 08:16