使用 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

相關內容