我想使用awk命令來執行多個搜索到從那裏它匹配以下兩個條件,一個日誌文件讀取記錄:多使用搜索AWK - 模式+算術條件
- 模式 - EXEC_TIME
- 最後列即EXEC_TIME> 5000毫秒。
我試過並使用下面的命令,但它沒有給我正確的輸出,不知道是否可以使用相同的方式!
我只是學習awk,所以任何幫助將不勝感激。
awk -F ':' '/EXEC_TIME/&&$15>="5000"{print $2,$15}' TransactionInfoLogs.log
MP170420.0548.T00003[SERV] 9065 ms
OC170420.0655.T00001[SERV] 708 ms
下面是示例日誌文件:
[TXN_ID]:MP170420.0548.T00003[SERV][SERV]:BLKSRVREQ[MSISDN]:8028359017[SV_CHRG_ID]:37152[RESP_CODE]:200[START]:Thu Apr 20 12:44:23 WAT 2017 [END]:Thu Apr 20 12:44:23 WAT 2017[EXEC_TIME]:9065 ms
[TXNID]:XX170420.1244.C01465[TYPE]:SERVICE_CHARGE_PAYER_PAYEE[AMT]:0[PR_MSISDN]:8028359017[PR_MFS]:101[PR_W_TYPE]:12[PR_PREBAL]:0[PR_BAL]:0[PY_MSISDN]:IND03[PY_MFS]:101[PY_W_TYPE]:null[PY_PRE
BAL]:2782239[PY_BAL]:2782239
[2017-04-20 12:44:29,552][http-bio-172.24.87.5-7890-exec-7365]-
[TXN_ID]:XX170420.1244.C01467[SERV]:null[MSISDN]:8080967233[RESP_CODE]:00066[START]:Thu Apr 20 12:44:29 WAT 2017 [END]:Thu Apr 20 12:44:29 WAT 2017[EXEC_TIME]:9 ms
[2017-04-20 12:44:36,634][http-bio-172.24.87.5-7890-exec-7364]-
[TXN_ID]:OC170420.0655.T00001[SERV]:null[MSISDN]:7016532415[RESP_CODE]:00066[START]:Thu Apr 20 12:44:36 WAT 2017 [END]:Thu Apr 20 12:44:36 WAT 2017[EXEC_TIME]:708 ms
[2017-04-20 12:44:45,820][http-bio-172.24.87.5-7890-exec-7359]-
[TXN_ID]:XX170420.1244.C01471[SERV]:null[MSISDN]:8026136275[RESP_CODE]:00066[START]:Thu Apr 20 12:44:45 WAT 2017 [END]:Thu Apr 20 12:44:45 WAT 2017[EXEC_TIME]:39 ms
[2017-04-20 12:44:46,010][http-bio-172.24.87.5-7890-exec-7366]-
[TXN_ID]:XX170420.1244.C01473[SERV]:BLKSRVREQ[MSISDN]:8127459541[SV_CHRG_ID]:37152[RESP_CODE]:200[START]:Thu Apr 20 12:44:45 WAT 2017 [END]:Thu Apr 20 12:44:46 WAT 2017[EXEC_TIME]:221 ms
[TXNID]:XX170420.1244.C01473[TYPE]:SERVICE_CHARGE_PAYER_PAYEE[AMT]:0[PR_MSISDN]:8127459541[PR_MFS]:101[PR_W_TYPE]:12[PR_PREBAL]:0[PR_BAL]:0[PY_MSISDN]:IND03[PY_MFS]:101[PY_W_TYPE]:null[PY_PRE
BAL]:2853870[PY_BAL]:2853870
[2017-04-20 12:44:49,989][http-bio-172.24.87.5-7890-exec-7371]-
[TXN_ID]:XX170420.1244.C01475[SERV]:BLKSRVREQ[MSISDN]:8089138902[SV_CHRG_ID]:37152[RESP_CODE]:200[START]:Thu Apr 20 12:44:49 WAT 2017 [END]:Thu Apr 20 12:44:49 WAT 2017[EXEC_TIME]:57 ms
[TXNID]:XX170420.1244.C01475[TYPE]:SERVICE_CHARGE_PAYER_PAYEE[AMT]:0[PR_MSISDN]:8089138902[PR_MFS]:101[PR_W_TYPE]:12[PR_PREBAL]:0[PR_BAL]:0[PY_MSISDN]:IND03[PY_MFS]:101[PY_W_TYPE]:null[PY_PRE
BAL]:3071459[PY_BAL]:3071459
,而不是指望字段的數量,你可以使用'打印$ 2,$ NF'打印你所需要的。 'NF' = Number_of_Fields,所以,使用前導'$'字符,使用'$ NF'將打印行上最後一個字段的值。你也可以對由'NF'返回的數字進行「數學運算」,例如,打印第三個到最後一個字段,即'$(NF-3)'。祝你好運。 – shellter
不要只是說'不要給我正確的輸出'並且保留它。 **向我們展示正確的/期望的輸出,並解釋你得到的輸出是「不正確」的。 –
您可能會對使用** Perl **:'perl -F':'-ne'/(?<= \ [EXEC_TIME \]:)\ d +/&& $&> 5000 && print「$ F [1]和$&「'文件' –