从bash修改configuration文件设置

我需要从bash脚本修改configuration文件,更改特定设置的值。 我需要使用常用的Linux工具(sed / awk / tr / etc)进行更改。 configuration文件可以在不同的节中具有相同的命名键:

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

和每个节中的行可以是不同的顺序,空行/之间的意见等。我已经试过sed,但不能跨线匹配(所以我不能匹配节名称)。 有人可以build议如何:1.更改与section1 key1相关的值? 2.打印标准输出与section1 key1相关的值

你可以用ex和这个脚本来完成。 举个简单的例子:

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

首先search节标题,然后searchvariables名称,然后只更改该行的设置。

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

你可以使用sed来匹配多行; 这里有一个很好的post: 我如何使用sed来replace多行string?