更改存在于 2 行之间的行

Muh*_*dNe 0 bash awk sed pattern-matching

我想修改段落中两行之间存在的一行。例如我有这个文件包含

fruits
apple
banana
end fruits
----
all list
egg
milk
banana
end list
Run Code Online (Sandbox Code Playgroud)

我想将水果块内(水果和最终水果之间)的香蕉改为浆果。怎么做?

Cyr*_*rus 5

使用 sed:

sed '/^fruits$/,/^end fruits$/{ s/banana/berry/ }' file
Run Code Online (Sandbox Code Playgroud)

输出:

水果
苹果
浆果
最终果实
----
所有列表
蛋
牛奶
香蕉
结束名单