我有困難從文本文件中抓幾行。例如說我有一個文件中的以下文字:如何grep/sed/awk,並獲得下幾行,直到某種模式
A I have a cat
B I have a dog
C I have a mouse
X I have a monkey
B I have a rat
T I have a cat
C I have a deer
X I have a turkey
我試圖找到包含單詞「貓」,如果句中有一個「A」的第一個字母,我所有的行喜歡獲取接下來的幾行(包括匹配模式「cat」的行),直到遇到字母「X」作爲行的第一個字母。
因此,舉例來說,上面的文字文件應該打印出來:
A I have a cat
B I have a dog
C I have a mouse
(打印出來,直到它看到的X)
注:該生產線「TI有一隻貓」不應該匹配,因爲即使它有貓它不以字母「A」開頭
我試圖尋找幫助,但找不到任何東西打印出行,直到某種模式匹配。我能找到的最接近的是
awk '/cat/ {for(i=0; i<=5; i++) {getline; print}}' filename
但打印出若干行的。我希望它打印出來,直到它看到下一個模式這是一個 「X」
如果您曾經在考慮使用getline,那麼請閱讀http://awk.info/?tip/getline,這樣您就能理解爲什麼這幾乎總是錯誤的方法,以及如何在極少數情況下強有力地實現它,當它是正確的做法。 –
感謝提示@EdMorton –