Я пытаюсь заменить команду sed командой sed, и она продолжает падать, поэтому после нескольких часов «пикетирования» я подумал, что задаю здесь вопрос.Замена sed с sed на RHEL6.7
У меня есть различные сценарии Баш, которые содержат этот вид линии:
sed 's/a hard coded server name servername.//'
Я хотел бы заменить его:
sed "s/a hard coded server name $(hostname).//"
Обратите внимание на добавление в двойные кавычки, так что $ (имя хоста), что делает это немного сложнее, чем я ожидал.
Так что это был мой первый из многих неудачных попыток:
cat file | sed 's!sed \'s\/a hard coded server name servername.\/\/\'!sed \"s\/a hard coded server name $(hostname).\/\/\"!g'
Я также попытался с помощью СЭД хорошо «-e» вариант, чтобы сломать заменить на части, чтобы попытаться и нацелены на проблемные области. Я бы не использовать «-e» переключатель в растворе, но она иногда полезно для отладки:
cat file | sed -e 's!servername!\$\(hostname\)!' -e 's!\| sed \'s!\| sed \"s!'
Первые SED произведения, как и ожидалось (ничего фантазии здесь происходит), а второй не может так ни одна точка не добавляя третий, который должен был бы заменить закрывающую двойную кавычку.
В этот момент моя история спускается в хаос, поэтому нет смысла добавлять больше неудачных попыток.
Я хотел использовать первую замену в одной команде, так как сценарий полон sed команд, и я хотел настроить только одну конкретную команду в скрипте.
Любые идеи будут оценены.
Вы не можете избежать одиночных кавычек в одинарных кавычках, которые вам нужны для использования двойных кавычек снаружи или использовать '' \ '' 'для каждой внутренней одиночной кавычки. Это говорит, что здесь http://stackoverflow.com/q/29613304/258523. –
Не помещайте всю команду sed в двойные кавычки или вам нужно беспокоиться о других вещах, скрывающихся во время будущих обновлений. Просто выйдите из одинарных кавычек для части, которую вы хотите расширить оболочку: 'sed '/ имя жесткого кодированного сервера' '$ (имя хоста)".// '' –
Я думал, что я избежал одной отдельной цитаты правильно в команде, не могли бы вы расширить @Etan? – Chris