使用 sed 删除两个单词之间的所有内容?

mun*_*ish 6 sed

似乎不起作用

The next example would delete everything between "ONE" and "TWO:" 

#!/bin/sh
sed '
/ONE/ {
# append a line
    N
# search for TWO on the second line 
    /\n.*TWO/ {
# found it - now edit making one line
        s/ONE.*\n.*TWO/ONE TWO/
    }
}' file
Run Code Online (Sandbox Code Playgroud)

我希望删除 ONE 和 TWO 之间的所有内容。我尝试使用文件包含的文件。

[user5@mailserver ~]$ cat file
ONE
hello
TWO
Run Code Online (Sandbox Code Playgroud)

但输出就像

[user5@mailserver ~]$ ./test
ONE
hello
TWO
Run Code Online (Sandbox Code Playgroud)

我期待ONE TWO 我试图使它正确但无法做到。

Val*_*ami 6

这将完成工作

sed '/^ONE/,/TWO/{/^ONE/!{/TWO/!d}}' file
Run Code Online (Sandbox Code Playgroud)

/^ONE/,/TWO/查看以ONEup to开头的第一行TWO

{/^ONE/! 如果我的行不以以下开头,请执行以下操作 ONE

{/TWO/!d}}如果我的行不以TWOand开头,请执行以下操作delete

总结以上内容:

查找以ONEup开头的所有内容TWO。运行另一项检查,这意味着找到所有与“ONE andTWO ”不匹配的内容并删除其余内容。