Bash

從 bash 修改配置文件設置

  • October 30, 2014

我需要從 bash 腳本修改配置文件,更改特定設置的值。我需要使用常見的 Linux 工具(sed/awk/tr/etc.)進行更改。配置文件可以在不同的節中具有相同名稱的鍵,如下所示:

[section1]
key1=a
key2=b
[section2]
key1=a
key2=b

並且每個節中的行可以以不同的順序排列,中間有空行/註釋等。我嘗試過 sed 但無法跨行匹配(所以我無法匹配節名稱)。有人可以建議如何:1.更改與 section1 key1 關聯的值嗎?2. 將與 section1 key1 關聯的值列印到標準輸出?

您可以使用 ex 和 here 腳本來完成。對於您的簡單範例:

ex $conf <<-EOF
  /^\[section1\]
  /^key1=
  s/=a/=c/
  wq
EOF

您首先搜尋節標題,然後搜尋變數名稱,然後僅更改該行上的設置。

聽起來像是 Augeas 的工作,它將文件分解為可編輯層次結構中的部分和設置。它不完全是標準工具,因為它可能不會預設安裝在給定係統上,但可以作為大多數 Linux 的軟體包使用。

引用自:https://serverfault.com/questions/640754