2012-04-04 102 views
0

我有兩條配對的日誌條目。我必須解析第一行來提取 一個數字,以確定它是否大於5000.如果這個數字大於5000,那麼我需要返回第二行,這也將被解析以檢索ID。只要第一行中的數值滿足,使用grep -A1返回第二行中的值

我知道如何grep所有的信息,並解析它。我不知道如何讓grep忽略 的東西,如果它們小於特定值。請注意,如果某些其他方法(如awk/sed)可以替代,我不會承諾使用grep。

原始數據(例如分離的兩條線,例如清晰度)。

我的grep的目標是下面的「提取=信用」的5001 ,如果這是在5000,然後我要數「12345」從 第二行返回---------- ----------------

2012-03-16T23:26:12.082358 0x214d000 DEBUG ClientExtractAttachmentsPlayerMailTask for envelope 22334455 finished: credits extracted = 5001, items extracted count = 0, status = 0. [Mail.heomega.mail.Mail](PlayerMailTasks.cpp:OnExtractAttachmentsResponse:944)  
2012-03-16T23:26:12.082384 0x214d000 DEBUG Mail Cache found cached mailbox for: 12345 [Mail.heomega.mail.Mail](MailCache.cpp:GetCachedMailbox:772) 

Snippits ------------------------ -

- 查找提取的積分數,沒有逗號噪音:

grep "credits extracted = " fileName.log | awk '{print $12}' | awk -F',' '{print $1}' 

- 找到第二行的ID不管提取信用的價值是:

grep -A1 "credits extracted = " fileName.log | grep "cached mailbox for" | awk -F, '{print $1}' | awk '{print $10}' 

- 一個「如果」語句象徵邏輯我需要獲得:

v_CredExtr=5001; v_ID=12345; if [ $v_Cred -gt 5000 ]; then echo $v_ID; fi; 
+0

請注意S.O.帖子在行首使用4個空格來表示'代碼示例'。我已將您的文章重新格式化,以突出您的原始文本的重點。我通常只添加代碼塊並修復分段符。我已經拿出了一些' - '(同時讓其他人),做出更清晰的文件。如果您不同意,可以使用輸入框頂部顯示的編輯工具欄撤銷編輯或重新編輯您的文章。基本上你可以用鼠標輕點你想要格式化的文本,然後點擊工具來獲得你想要的效果。即代碼爲'{}'。祝你好運。 – shellter 2012-04-04 22:15:38

+0

現在考慮使用您包含的示例數據編輯您的文章以包含您所需的輸出格式。這很可能是awk中的單線程,但我們將播放20個問題直到看到所需的輸出。祝你好運。 – shellter 2012-04-04 22:17:45

+0

不得不編輯上面的評論,刷新最新版本;-)對不起。 – shellter 2012-04-04 22:19:13

回答

1

你可以做一切與一個AWK過濾器,我相信:

#!/usr/bin/awk -f 

/credits extracted =/ { 
    credits = substr($12, 1, length($12) - 1) + 0 
    if (credits > 5000) 
     show_id = 1 
    next 
} 

show_id == 1 { 
    print $10 
    show_id = 0 
} 

很明顯,你可以一下子就將這些AWK腳本在shell字符串中的腳本中,甚至多行。爲了清楚起見,我在這裏以自己的腳本展示了它。

P.S:請在工作時通知;-)

+0

你真棒!我一直在踢這個東西好幾天,花了你幾分鐘?莫名其妙。謝謝。 – 2012-04-04 23:40:13

+0

您應該定義閱讀[AWK聖經](http://plan9.bell-labs.com/cm/cs/awkbook/),您會驚訝於AWK在文本處理上的有用程度。 – C2H5OH 2012-04-04 23:49:41

+0

感謝您的建議。我只是將它添加到我的亞馬遜購物車,並從GNU網站上抓取了一本手冊。你創造了一個怪物! – 2012-04-05 00:22:14

相關問題