Пожалуйста, помогите мне понять более продвинутый синтаксис sed.Насколько я понимаю, я могу использовать две команды sed в одной строке для поиска шаблона и последующей его условной вставки после этого шаблона.вот цель.У меня есть такой файл:
[PATTERN]
String
Мне нужно sed для вставки «String» после [PATTERN], только если «String» не существует.
«String» использует Ansible переменныеи в основном выглядит так:
{{ hostname.droplet.name }} ansible_ssh_host={{ hostname.droplet.ip_address }}
это переводится как
hostname ansible_ssh_host=X.X.X.X
Так что в конечном итоге у меня будет следующий пример реального мира (не концептуальный):
[DROPLETS]
ilovetacos ansible_ssh_host=127.0.0.1
Если под [DROPLETS] нет подходящей строки, добавьте строку.Если конкретная строка имени хоста уже существует, не добавляйте ее снова.
Я могу обработать первую часть:
sed '/\[DROPLETS\]/a STRING' inventory
Теперь вот моя первая проблема.Я не знаю, как обрабатывать переменные внутри команды sed?Возможно, вот так?
sed '/\[DROPLETS\]/a "{{ hostname.droplet.name }} ansible_ssh_host={{ hostname.droplet.ip_address }}"' inventory
Следующая часть - добавить условную проверку.Я думал, что сначала нужно просто выполнить grepe для строки, а затем передать в sed, но, похоже, есть лучший способ сделать все это с помощью одной команды sed.Может кто-нибудь помочь мне с этим более сложным синтаксисом?
Спасибо