Come posso selezionare la prima occorrenza tra due pattern che li includono. Preferibilmente usando sed
o awk
.
Ho:
text
something P1 something
content1
content2
something P2 something
text
something P1 something
content3
content4
something P2 something
text
Voglio la prima occorrenza delle linee tra P1 e P2 (inclusa la linea P1 e la linea P2):
something P1 something
content1
content2
something P2 something
Risposta accettata:
sed '/P1/,/P2/!d;/P2/q'
…farebbe il lavoro in modo portatile tramite d
eleting tutte le righe che fanno !
non rientrano nell'intervallo, quindi q
la prima volta che incontra la fine dell'intervallo. Non fallisce per P2 che precede P1 e non richiede la sintassi specifica GNU per scrivere semplicemente.