使用 shell 脚本编辑 /etc 中的文件?

使用 shell 脚本编辑 /etc 中的文件?

我如何使用sed它来编辑文件/etc/heat/heat.conf

我想在默认部分下添加新行

[DEFAULT]
rabbit_host =controller
rabbit_password =RABBIT_PASS

答案1

您可以使用/regexp/地址查找包含 的行[DEFAULT],然后使用append ( a) 命令在其下添加行。传递-itosed使其就地修改文件(您可能想先在没有它的情况下运行,以确保它做正确的事情;它将输出更改后的文件的外观,而无需实际更改它):

# sed -i '/^\[DEFAULT\]$/a rabbit_host =controller\nrabbit_password =RABBIT_PASS' /etc/heat/heat.conf

答案2

如果你有一个/tmp/a带有 contnet 的文件

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

如果conf 文件中已有条目,则将更新。

答案4

老派ed方法

ed -s test <<EOF
/^\[DEFAULT\]$/
a
rabbit_host =controller
rabbit_password =RABBIT_PASS
.
w
q
EOF

相关内容