2013-07-06 51 views
1

之間我已經我從bash外殼,其輸出一大堆線的啓動命令。濾波輸出線是某些線

我想看看它的所有除了線之間的界限「尋找變化」和「等待來自服務器的更改」

所以我們可以說實際產量輸出 -

 
Line 1 
Line 2 
Looking for changes 
Line 3 
Line 4 
Waiting for changes from server 
Line 5 
Line 6 

我想只看到 -

 
Line 1 
Line 2 
Looking for changes 
Waiting for changes from server 
Line 5 
Line 6 

我能寫,我可以管這個通過,但不知道是否可以用的東西做開箱快速python腳本,如grepØ r awk。

回答

2

我想出了這個解決方案:從文件的開頭

$ sed -n -e '1,/Looking/p' -e '/Waiting/,$p' file 
Line 1 
Line 2 
Looking for changes 
Waiting for changes from server 
Line 5 
Line 6 
  • '1,/Looking/p'最多可打印含有Looking行。
  • '/Waiting/,$p'從包含Waiting的行打印直到文件末尾。
  • sed -e是讓SED執行不同的塊的方式:sed -e 'something' -e 'other thing'
1

下面是一個AWK一個襯裏:

... | awk '/^Waiting for changes from server$/{p=0}p==0{print}/^Looking for changes$/{p=1}' 

我們使用變量p作爲標誌。如果它是零,我們打印該行,否則我們不打印。當我們匹配指定的行時,標誌更改值。

+0

thanks..this works。但是我選擇了其他答案,因爲這導致輸出緩衝區,並且只有在命令執行結束時纔會顯示所有內容 – 0cd