Редактировать файл в /etc с помощью скриптов оболочки?

Редактировать файл в /etc с помощью скриптов оболочки?

Как мне использовать его 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

Связанный контент