我有每条成对两行的日志条目。我必须解析第一行以提取一个数字以知道它是否大于 5000。如果这个数字大于 5000,那么我需要返回第二行,这也将被解析以检索一个 ID。
我知道如何 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)
片段--------------
-- 找出提取的学分数量,没有逗号噪音:
grep "credits extracted = " fileName.log | awk '{print $12}' | awk -F',' '{print $1}'
-- 无论提取的 credits 的值是多少,查找第二行的 ID:
grep -A1 "credits extracted = " fileName.log | grep "cached mailbox for" | awk -F, '{print $1}' | awk '{print $10}'
-- 一个“if”语句,象征着我需要获得的逻辑:
v_CredExtr=5001; v_ID=12345; if [ $v_Cred -gt 5000 ]; then echo $v_ID; fi;