Awk
如何在兩個模式之間選擇第一個出現,包括第一個?
類似於但不完全類似於如何在包括它們在內的兩個模式之間選擇第一次出現……給定這個輸入文件:
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
等等。如果沒有明確的要求說明,這只是一個猜測。