Sed

如何在包括它們在內的兩種模式之間選擇第一次出現

  • March 30, 2022

如何在包括它們在內的兩種模式之間選擇第一次出現。最好使用sedawk

我有:

text
something P1 something
content1
content2
something P2 something
text
something P1 something
content3
content4
something P2 something
text

我想要第一次出現 P1 和 P2 之間的線(包括 P1 線和 P2 線):

something P1 something
content1
content2
something P2 something
sed '/P1/,/P2/!d;/P2/q'

…將通過d刪除所有!不在範圍內的行來完成這項工作,然後q在它第一次遇到範圍的末尾時進行調整。P2 在 P1 之前它不會失敗,並且它不需要 GNU 特定的語法來簡單地編寫。

awk

awk '/P1/{a=1};a;/P2/{exit}' file
something P1 something
content1
content2
something P2 something

引用自:https://unix.stackexchange.com/questions/180663