在两个模式之间搜索一个模式,然后使用sed命令在该模式上方或下方添加一行

在两个模式之间搜索一个模式,然后使用sed命令在该模式上方或下方添加一行,sed,Sed,让有一个像..这样的文件 Mango Apple Orange Lenovo Cherry Stack Stack 现在我想在包含apple和stack的行之间搜索cherry,并在cherry上方插入新行 输出应该是 Mango Apple Orange Lenovo **NEWLINE** Cherry Stack Stack 使用sed sed '/Apple/,/Stack/{s/Cherry/**Newline**\n&/}' file 解释 /Apple/,/Stac

让有一个像..这样的文件

Mango
Apple
Orange
Lenovo
Cherry
Stack
Stack
现在我想在包含apple和stack的行之间搜索cherry,并在cherry上方插入新行

输出应该是

Mango
Apple
Orange
Lenovo
**NEWLINE**
Cherry
Stack
Stack
使用sed

sed '/Apple/,/Stack/{s/Cherry/**Newline**\n&/}' file
解释
  • /Apple/,/Stack/
    搜索
    Apple
    Stack
  • s/Cherry/**换行符**\n&/
    replace命令
    s
这可能适合您(GNU-sed):

使用
awk

awk '/Apple/,/Stack/ {if ($0~/Cherry/) $0="**NEWLINE**"RS$0}8'
Mango
Apple
Orange
Lenovo
**NEWLINE**
Cherry
Stack
Stack

Apple
Stack
的搜索,如果找到了带有
Cherry
的行,请在上面插入新行。

您尝试过什么吗?
awk '/Apple/,/Stack/ {if ($0~/Cherry/) $0="**NEWLINE**"RS$0}8'
Mango
Apple
Orange
Lenovo
**NEWLINE**
Cherry
Stack
Stack