鉴于:sed -e '/pattern1/,/pattern2/!d' file.org
如何匹配pattern1和pattern2之间第一次出现的行,而不是其余的?
例如:
pattern1
aaaa
pattern2
pattern1
bbb
pattern
应该输出:
aaa
欢迎替代解决方案(使用grep
或其他)。awk
答案1
$ cat input
a
b
c
a
b
c
$ sed -n '/a/,/c/p;/c/q' input
a
b
c
搜索要打印的范围,然后在看到第一个“结束”标记后退出。
awk
使得排除起点和终点变得更容易:
$ awk 'BEGIN { p=0 } /c/ { p=0; exit } p {print} /a/ { p=1 }' input
b