Sed-将行从正则表达式打印到(正则表达式或eof)

Sed-将行从正则表达式打印到(正则表达式或eof),sed,Sed,如何使sed打印行从一个匹配的正则表达式(包括)到另一个匹配的正则表达式(包括),但附加条件-结束正则表达式可能根本不存在,在这种情况下,应打印EOF之前的所有内容 示例1(假设^START.*和^END.*作为定界正则表达式): 例2: cruft1 cruft2 START print this print this print this - file ends here 子问题:只打印第一个这样的事件。匹配从^START到^END的所有行 sed -n '/^START/,/^END/

如何使
sed
打印行从一个匹配的正则表达式(包括)到另一个匹配的正则表达式(包括),但附加条件-结束正则表达式可能根本不存在,在这种情况下,应打印EOF之前的所有内容

示例1(假设
^START.*
^END.*
作为定界正则表达式):

例2:

cruft1
cruft2
START print this
print this
print this
- file ends here

子问题:只打印第一个这样的事件。

匹配从^START到^END的所有行

 sed -n '/^START/,/^END/p' <file>
sed-n'/^START/,/^END/p'
首次打印

 sed -n '/^START/,/^END/ {p;q;}' <file>
sed-n'/^START/,/^END/{p;q;}'

匹配从^START到^END的所有行

 sed -n '/^START/,/^END/p' <file>
sed-n'/^START/,/^END/p'
首次打印

 sed -n '/^START/,/^END/ {p;q;}' <file>
sed-n'/^START/,/^END/{p;q;}'

在EOF之前,第一个也适用于我,但第二个不适用。它将在开始时执行
q
。您将需要第二个条件,例如:
sed-n'/^START/,/^END/{p;/^END/q;}'
你们在使用什么操作系统?好吧,我在检查这个时犯了一个愚蠢的错误。这是有效的(警告被Birei发现。)谢谢!第一个在EOF之前对我也有效,但第二个不行。它将在开始时执行
q
。您将需要第二个条件,例如:
sed-n'/^START/,/^END/{p;/^END/q;}'
你们在使用什么操作系统?好吧,我在检查这个时犯了一个愚蠢的错误。这是有效的(警告被Birei发现。)谢谢!