Bash 如何使用sed获取两行之间的内容,但两行匹配的内容将被转义
我目前正在使用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 -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