Ваш вопрос немного сбивает с толку, поскольку в исходной строке нет me
для замены.Тем не менее, я думаю, что у меня есть.Позвольте мне перефразировать:
У меня есть команда sed
, которая может успешно заменить одиночную кавычку '
словом me
.Я хочу подобный, который может заменить его на последовательность символов \'
.
Если это так (вы просто хотите экранировать одинарные кавычки), вы можете использовать:
pax$ echo "test ' this" | sed "s/'/\\\'/g"
test \' this
Используя двойные кавычки вокруг команды sed
, вы избавляетесь от необходимости беспокоиться о вложенных одинарных кавычках.Вам делать придется беспокоиться о побеге, поскольку оболочка будет поглощать один уровень побега, так что sed
увидит:
s/'/\'/g
, который преобразует '
в \'
по желанию.
Если вам нужен способ избежать как одинарных , так и двойных кавычек с одним sed
, вероятно, проще всего предоставить несколько команд для sed
, чтобы вы могли использоватьальтернативные кавычки:
pax$ echo "Single '" 'and double "'
Single ' and double "
pax$ echo "Single '" 'and double "' | sed -e "s/'/\\\'/g" -e 's/"/\\"/g'
Single \' and double \"
Если я неправильно понял ваши требования, несколько примеров могут помочь.