Bash
從 bash 修改配置文件設置
我需要從 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 的軟體包使用。