2013-11-25 13 views
0

要只打印這是從開始直至到終點打印僅僅是從開始直至到終點

例子:

Started at Mon Nov 25 14:30:02 ALMT 2013 
Load average for db1 is 10 which is less than 100 
Load average for db2 is 3 which is less than 100 
Load average for db3 is 6 which is less than 100 
Load average for db4 is 5 which is less than 100 
Load average for db5 is 5 which is less than 100 
Mon Nov 25                     page 
some other data 
some other data 
some other data 

預計:

Started at Mon Nov 25 14:30:02 ALMT 2013 
Load average for db1 is 10 which is less than 100 
Load average for db2 is 3 which is less than 100 
Load average for db3 is 6 which is less than 100 
Load average for db4 is 5 which is less than 100 
Load average for db5 is 5 which is less than 100 
Mon Nov 25                     page 

我試試那個:

perl -0777 -lpe 's|Started .*? page||xsg' 1 

但是刪除了我想打印的整個區域。

+0

犯錯我沒有看到任何終點。 – fedorqui

+1

只是滾動到有正確的「開始在...」和完成是「25頁」 –

+0

所以你記錄的「結束」是「開始」行日期,後跟字符串「頁」?在「頁面」之前有大量的空白?你必須具體,因爲我們無法讀懂你的想法:你必須告訴我們你需要什麼。 – TLP

回答

2

或用。但要注意的是,如果遇到「啓動」標籤,但不是「結束」,將打印一切從開始標記文件的末尾

sed -n '/^Started/, /page/p' file 
1

嘗試以下操作:

$ perl -0777 -lpe 's|.*(Started .*? page).*|$1|xsg' 1 
3

類似的東西可以使它:

$ awk '/^Started/ {p=1} p; /page$/ {p=0}' file 
Started at Mon Nov 25 14:30:02 ALMT 2013 
Load average for db1 is 10 which is less than 100 
Load average for db2 is 3 which is less than 100 
Load average for db3 is 6 which is less than 100 
Load average for db4 is 5 which is less than 100 
Load average for db5 is 5 which is less than 100 
Mon Nov 25                     page 
  • /^Started/ {p=1}當它發現開始 「入門」 的字符串,則標誌p設爲1.
  • p打印的情況下的線標誌p是真實的。
  • /page$/ {p=0}時,它會發現 「頁」 結尾的字符串,則標誌p設置爲0

另外,(thanks 1_CR):

awk '/^Started/,/page$/' file 
+0

奇怪是不是我的控制檯上工作,只是打印所有輸出:一個符合「開始」,並以「頁」一行結束開始:/ –

+0

檢查,如果你的樣品輸入下面的比賽。 – fedorqui

+1

'awk'/^Started /,/ page $ /'file'應該也能正常工作 – iruvar

1
perl -0777 -ne 'print /(Started .*? page)/xsg' 1