实际上,我试图在配置文件“testfile”中的节标题后直接插入一行文本,如下所示:
[default]
[stuff]
[stuff_test]
[end]
Run Code Online (Sandbox Code Playgroud)
目标是在 [stuff] 之后且仅在 [stuff] 之后插入一行文本“variable = 1”。这是“testfile”所需的输出
[default]
[stuff]
variable = 1
[stuff_test]
[end]
Run Code Online (Sandbox Code Playgroud)
当我尝试使用 sed 的 append 函数时:
sed -i "/[stuff]/ a variable = 1" testfile
Run Code Online (Sandbox Code Playgroud)
我得到以下信息:
[default]
variable = 1
[stuff]
variable = 1
[stuff_test]
variable = 1
[end]
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么它在前三节中插入文本,而不是按照我的意图只在第二节中插入?我尝试使用完全匹配,但我的上下文可能有误?已经尝试了以下其他努力:
sed -i "/\<[stuff]\>/ a variable = 1" testfile
sed "/\<\[stuff\]\>/ a variable = 1" testfile
Run Code Online (Sandbox Code Playgroud)
这不会在文件中插入任何文本。如何仅在“[stuff]”节之后插入 sed?
地址/[stuff]/被解释为正则表达式,即匹配包含任何字符s, t,u或 的任何行f。为避免解释为括号表达式,您必须转义方括号:
sed -i "/\[stuff\]/ a variable = 1" testfile
Run Code Online (Sandbox Code Playgroud)