sed - 在匹配后的X行后插入行

Nuc*_*ear 11 linux shell sed

我有以下内容:

void function_1()
{
    //something (taking only 1 line)
}
->INSERT LINE HERE<-
//more code
Run Code Online (Sandbox Code Playgroud)

使用sed,我想在INSERT LINE HERE标签处插入行.最简单的方法应该是:

  1. 找到文字"function_1"
  2. 跳过3行
  3. 插入新行

但是没有一种已知的sed选项可以胜任这项工作.

sed '/function_1/,3a new_text
Run Code Online (Sandbox Code Playgroud)

在'function_1'之后插入new_text

sed '/function_1/,+3a new_text
Run Code Online (Sandbox Code Playgroud)

在'function_1'后面的后3行中的每一行之后插入new_text

sed '/function_1/N;N;N; a new_text
Run Code Online (Sandbox Code Playgroud)

在多个位置插入new_text,与模式无关

谢谢.

Cyr*_*rus 7

试试这个:

sed "/function_1/{N;N;N;a new_text
}" filename
Run Code Online (Sandbox Code Playgroud)

  • 或者: `sed '/function_1/!{p;d;};n;n;n;a new text'` 它更加迂回,但在 sed 代码中无需换行符即可工作(因为 `a` 命令位于末尾)。 (3认同)