2013-03-03 211 views
1

如何使sed從一個匹配的正則表達式(包含)到另一個匹配的正則表達式(包括)的打印行,但是添加了條件 - 關閉正則表達式可能不會是否存在,在這種情況下,直到EOF的所有內容都應該打印出來?Sed - 從正則表達式到(正則表達式或eof)

例1(假設^START.*^END.*作爲界定正則表達式):

cruft1 
cruft2 
START print this 
print this 
print this 
END print this too 
cruft 

例2:

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

Subquestion:打印僅第一個這樣的occurence。

回答

1

匹配的所有行從^開始到^ END

sed -n '/^START/,/^END/p' <file> 

打印一次出現

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

有趣,對我的作品 - 慶典上MAC OS V6.8 – suspectus 2013-03-03 11:19:56

+0

我會重新檢查。 – 2013-03-03 11:20:56

+2

第一個也適用於我,直到EOF,但不是第二個。它會在START處執行'q'。您將需要第二個條件,如:'sed -n'/^START /,/^END/{p;/^ END/q;}'' – Birei 2013-03-03 11:25:26