如何使用sed替换ini文件中的值?

时间:2013-03-03 09:22:17

标签: sed

此示例来自devstack脚本。

sed -i -e "/^\[$section\]/,/^\[.*\]/ s|^\($option[ \t]*=[ \t]*\).*$|\1$value|" "$file"

任何人都可以解释这个sed替换命令是如何工作的吗?

我理解一些基本的sed机制,但这对我来说似乎很复杂。

1 个答案:

答案 0 :(得分:2)

-i选项可以编辑文件$ file。

地址范围

要匹配的行范围的语法是/ pattern1 /,/ pattern2 / 该脚本搜索第一行中包含行开头的$ section中的字符(注意使用插入符号)到此^ [。*]的行范围,该行表示包含至少一个字符的行。

换人

对于与上述范围说明符匹配的所有行,执行替换命令s / pattern / replacement / command。 注意使用|分隔替换命令 - s | pattern | replacement |。

要匹配的模式使用插入符号(^)从行的开头开始。

部分(....)在替换部分中称为\ 1。

在(...)部分是字符串$ section,后跟可能有多个空格或制表符 - [\ t] *表示没有或多个制表符或空格。后跟一个'='字符,可能还有更多的空格或制表符。 。* $将匹配任意数量的字符到行尾。

替换\ 1 $值是前面提到的包含(...)的部分,后跟$ value中的值。

HTH!