我有兩條配對的日誌條目。我必須解析第一行來提取 一個數字,以確定它是否大於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;
請注意S.O.帖子在行首使用4個空格來表示'代碼示例'。我已將您的文章重新格式化,以突出您的原始文本的重點。我通常只添加代碼塊並修復分段符。我已經拿出了一些' - '(同時讓其他人),做出更清晰的文件。如果您不同意,可以使用輸入框頂部顯示的編輯工具欄撤銷編輯或重新編輯您的文章。基本上你可以用鼠標輕點你想要格式化的文本,然後點擊工具來獲得你想要的效果。即代碼爲'{}'。祝你好運。 – shellter 2012-04-04 22:15:38
現在考慮使用您包含的示例數據編輯您的文章以包含您所需的輸出格式。這很可能是awk中的單線程,但我們將播放20個問題直到看到所需的輸出。祝你好運。 – shellter 2012-04-04 22:17:45
不得不編輯上面的評論,刷新最新版本;-)對不起。 – shellter 2012-04-04 22:19:13