我有幾百個日誌文件,用於成功和一些不成功的作業。所有不成功的作業都有「不可翻譯」的字眼,所以我可以使用這個命令輕鬆找到所有的文件。使用diff和fgrep查找日誌中的類似錯誤
grep untranslatable *
所以,現在,我發現所有這些文件,我試圖找出還有什麼這些文件的共同點,但我也試圖排除所有存在於該行的成功的日誌文件。
我已經試過這些:
diff --changed-group-format='%<' --unchanged-group-format='' 20160120142000_xxx_xxx_xxx_xxx_fexp.log 20151214153516_yy_yyy_yyy_yyy_yyy_yyy_hist.dat.log | fgrep -x -f 20160120142000_xxx_xxxx_xxx_xxxx_xxx.log 20150904115502_zzz_zzzz_zzzzz_zzzz_fexp.log | grep untranslatable
diff --changed-group-format='%<' --unchanged-group-format='' 20160120142000_xxx_xxxx_xxx_xxx_fexp.log 20151214153516_cc_ccc_ccc_cccc_cccc_cccc_cccc.dat.log |grep untranslatable
fgrep -x <(diff --changed-group-format='%<' --unchanged-group-format='' 20160120142000_EMD_APPN_FEE_DETL_fexp.log 20151214153516_TD_EXT_LPS_PROC_MGMT_FORM_hist.dat.log) <(diff --changed-group-format='%<' --unchanged-group-format='' 20150904115502_smr_sale_price_type_fexp.log 20151214153516_TD_EXT_LPS_PROC_MGMT_FORM_hist.dat.log)
將是最好的途徑是什麼,如果我問的是可能的嗎?我不知道正則表達式,但如果這會有所幫助,我可能會閱讀它。
例子:
的每個文件,成功與否包含文本的此塊。
563 ========================================================================
564 = =
565 = Logoff/Disconnect =
566 = =
567 ========================================================================
568 **** 14:20:55 UTY6215 The restart log table was not dropped by this task.
569 **** 14:20:57 UTY6212 A successful disconnect was made from the RDBMS.
570 **** 14:20:57 UTY2410 Total processor time used = '0.11 Seconds'
571 . Start : 14:20:23 - WED JAN 20, 2016
572 . End : 14:20:57 - WED JAN 20, 2016
573 . Highest return code encountered = '12'i.
我不想看到這個,因爲它與這些類型的模塊的其餘一起,使它真的很難找到有問題的線路。
每個不成功的文件包含了這一點,但是:
14:20:54 UTY8713 RDBMS failure, 6706: The string contains an untranslatable
560 character.
但是,僅此是不夠的,發現問題。這些日誌每個都是600線。我需要找出我在哪裏嘗試閱讀我的日誌中的這個不可翻譯的字符,因此我可以相應地更改我的查詢。噪聲過濾後讀取日誌會更容易。 (我正在閱讀的文件長達數百萬行,所以我試圖不去看那裏)
我意識到我可能在這裏要求一個魔術。
我並不想透露太多關於這些日誌的信息,所以一種方法已經足夠好了。我可以弄明白。
感謝,
馬茲
*在任何*線測試*任何*成功的日誌文件都希望從失敗的日誌文件中排除?排除所有其他行之後,您想要在一對失敗的日誌文件之間進行區分?如果不是,你能更好地解釋*完全*你想要什麼? –
我試圖去除成功和不成功的日誌共有的噪音,所以你是正確的。 – Maz
如果你真的*表示你想要過濾出**任何**成功文件中的每一行**,並且只顯示失敗文件中的**其他**行,那麼這很簡單,但時間戳記正在使匹配複雜化,除非你可以定義「區域」來忽略或模式化等等。你需要提供更多關於事物的具體信息。 –