GNU/Linux >> Znalost Linux >  >> Linux

Jak vybrat první výskyt mezi dvěma vzory, které je obsahují?

Jak mohu vybrat první výskyt mezi dvěma vzory, které je obsahují. Nejlépe pomocí sed nebo awk .

Mám:

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

Chci první výskyt řádků mezi P1 a P2 (včetně řádků P1 a P2):

something P1 something
content1
content2
something P2 something

Přijatá odpověď:

sed '/P1/,/P2/!d;/P2/q'

…udělal by práci přenosně pomocí d odstranění všech řádků, které dělají ! nespadají do rozsahu, pak q při prvním setkání s koncem rozsahu. Neselže pro P2 předcházející P1 a pro jednoduchý zápis nevyžaduje specifickou syntaxi GNU.


Linux
  1. Tisknout čáry mezi (a vyjma) dvěma vzory?

  2. Tisknout čáry mezi (a včetně) dvěma vzory?

  3. Linux – Jak smazat soubory vytvořené mezi dvěma časy?

  1. Jak mohu získat slova mezi prvními dvěma výskyty textu/vzoru?

  2. Jak porovnat pouze první řádek dvou souborů?

  3. Jak zablokovat veškerý provoz mezi dvěma rozhraními?

  1. Jak extrahovat protokoly mezi dvěma časovými razítky?

  2. Jak odstranit soubory vytvořené mezi dvěma časy?

  3. Jak zobrazím názvy souborů, které obsahují dva znaky a jeden z nich je c?