此示例来自devstack脚本。
sed -i -e "/^\[$section\]/,/^\[.*\]/ s|^\($option[ \t]*=[ \t]*\).*$|\1$value|" "$file"
任何人都可以解释这个sed
替换命令是如何工作的吗?
我理解一些基本的sed
机制,但这对我来说似乎很复杂。
答案 0 :(得分:2)
-i选项可以编辑文件$ file。
要匹配的行范围的语法是/ pattern1 /,/ pattern2 / 该脚本搜索第一行中包含行开头的$ section中的字符(注意使用插入符号)到此^ [。*]的行范围,该行表示包含至少一个字符的行。
对于与上述范围说明符匹配的所有行,执行替换命令s / pattern / replacement / command。 注意使用|分隔替换命令 - s | pattern | replacement |。
要匹配的模式使用插入符号(^)从行的开头开始。
部分(....)在替换部分中称为\ 1。
在(...)部分是字符串$ section,后跟可能有多个空格或制表符 - [\ t] *表示没有或多个制表符或空格。后跟一个'='字符,可能还有更多的空格或制表符。 。* $将匹配任意数量的字符到行尾。
替换\ 1 $值是前面提到的包含(...)的部分,后跟$ value中的值。
HTH!