我目前正在使用sed来获取两行之间的内容。我有一个很好的教程:http://www.cyberciti.biz/faq/unix-linux-sed-print-only-matching-lines-command/
在本教程中,我发现:
sed -n -e '/regexpA/,/regexpB/p' input.file
上面的命令也会打印出匹配regexpA
和regexpB
的行,但是我想要逃避这两行,说这两条匹配的行不会打印到STDOUT,是否有任何漂亮的解决方案为了这?
提前致谢。
答案 0 :(得分:5)
这个怎么样:
sed '1,/regexpA/d;/regexpB/,$d' input.file
答案 1 :(得分:1)
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范围搜索习语,请参阅https://stackoverflow.com/a/17914105/1745001。
答案 2 :(得分:0)
这可能适合你(GNU sed):
sed '/regexpA/,/regexpB/!d;//d' file
删除regexpA
和regexpB
之前和之后的所有行,然后删除与regexpA
和regexpB
匹配的行。