Awk

如何在兩個模式之間選擇第一個出現,包括第一個?

  • January 5, 2020

類似於但不完全類似於如何在包括它們在內的兩個模式之間選擇第一次出現……給定這個輸入文件:

something P1 something
content1
content2
something P1 something
content3
content4

我只需要這個輸出:

something P1 something
content1
content2

一個 awk 解決方案:

awk '/^something P1 something$/{if(++i>1)exit} i' input_file

這將列印第一行匹配/^something P1 something$/和所有行,直到下一行匹配該模式(但不包括所述行)或文件末尾。

這就是我懷疑你真正想要的:

要列印第一個塊:

$ awk '$0=="something P1 something"{c++} c==1' file
something P1 something
content1
content2

或列印第二個:

$ awk '$0=="something P1 something"{c++} c==2' file
something P1 something
content3
content4

等等。如果沒有明確的要求說明,這只是一個猜測。

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