Bash 如何使用sed获取两行之间的内容,但两行匹配的内容将被转义

Bash 如何使用sed获取两行之间的内容,但两行匹配的内容将被转义,bash,sed,Bash,Sed,我目前正在使用sed来获取两行之间的内容。我得到了一个很好的教程: 在本教程中,我发现: sed -n -e '/regexpA/,/regexpB/p' input.file 上面的命令还将打印匹配的regexpA和regexpB行,但我想转义这两行,假设这两个匹配行不会打印到STDOUT,有什么好的解决方案吗 提前谢谢。这个怎么样: sed '1,/regexpA/d;/regexpB/,$d' input.file sed用于单个行上的简单替换,只需使用awk: $ cat file

我目前正在使用sed来获取两行之间的内容。我得到了一个很好的教程:

在本教程中,我发现:

sed -n -e '/regexpA/,/regexpB/p' input.file
上面的命令还将打印匹配的
regexpA
regexpB
行,但我想转义这两行,假设这两个匹配行不会打印到STDOUT,有什么好的解决方案吗

提前谢谢。

这个怎么样:

sed '1,/regexpA/d;/regexpB/,$d' input.file

sed用于单个行上的简单替换,只需使用awk:

$ cat file
a
b
c
d
e

$ awk '/b/{f=1} f; /d/{f=0}' file
b
c
d

$ awk 'f; /b/{f=1} /d/{f=0}' file
c
d

$ awk '/b/{f=1} /d/{f=0} f' file
b
c

$ awk '/d/{f=0} f; /b/{f=1}' file
c
有关其他常见的awk范围搜索习惯用法,请参阅。

这可能适合您(GNU-sed):


删除
regexpA
regexpB
之前和之后的所有行,然后删除与
regexpA
regexpB
匹配的行,这正是您需要的:很好!这看起来像乒乓球!:)
sed '/regexpA/,/regexpB/!d;//d' file