Как мне использовать его sed
для редактирования файла /etc/heat/heat.conf
?
Я хочу добавить новые строки в раздел по умолчанию
[DEFAULT]
rabbit_host =controller
rabbit_password =RABBIT_PASS
решение1
Вы можете использовать /regexp/
адрес, чтобы найти строку, содержащую [DEFAULT]
, а затем команду append ( a
), чтобы добавить строки под ней. Передайте , -i
чтобы sed
она изменила файл на месте (вы можете сначала запустить ее без нее, чтобы убедиться, что она делает правильно; она выведет, как будет выглядеть измененный файл, не изменяя его на самом деле):
# sed -i '/^\[DEFAULT\]$/a rabbit_host =controller\nrabbit_password =RABBIT_PASS' /etc/heat/heat.conf
решение2
если у вас есть файл /tmp/a
с содержимым
hello my friend
Для замены строк можно использовать sed:
sed -i 's/hello/hi/g' /tmp/a
это приведет к:
hi my friend
видеть:man sed
Также вы можете добавлять строки без sed
файла, используя >>
:
echo "I like you">>/tmp/a
решение3
Я уверен, что автор запроса уже нашел решение, но на всякий случай.
Этот запрос идеально подходит для приложения crudini, он доступен для всех основных дистрибутивов Linux, например, следующий код добавит строку в DEFAULT
раздел/etc/heat/heat.conf
crudini --set /etc/heat/heat.conf DEFAULT mysetting true
Секция:
[DEFAULT]
rabbit_host =controller
rabbit_password =RABBIT_PASS
mysetting = true
обновит, если запись уже есть в файле конфигурации.
решение4
ed
Подход старой школы
ed -s test <<EOF
/^\[DEFAULT\]$/
a
rabbit_host =controller
rabbit_password =RABBIT_PASS
.
w
q
EOF