4

此示例来自 devstack 脚本。

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

谁能解释这个sed替换命令是如何工作的?

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

4

1 回答 1

2

-i 选项在原地编辑文件 $file。

地址范围

要匹配的行范围的语法是 /pattern1/,/pattern2/ 脚本搜索从包含行首 $section 中的字符的第一行到此 ^ 的行范围[.*] 表示包含至少一个字符的行。

替代

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

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

部分 (....) 位于替换部分中,称为 \1。

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

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

于 2013-03-03T09:56:39.997 回答