从 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 关联的值打印到 stdout?

答案1

你可以用 ex 和此处的脚本来实现。下面是一个简单的示例:

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

首先搜索节头,然后搜索变量名,然后仅更改该行上的设置。

答案2

听起来像是 Augeas 的工作,它将文件分解为可编辑层次结构中的部分和设置。它不完全是一个标准工具,因为它可能不会默认安装在给定系统上,但对于大多数 Linux 来说,它将作为一个软件包提供。

答案3

您可以使用 sed 来匹配多行;这里有一篇很棒的文章:如何使用 sed 替换多行字符串?

相关内容