在日誌中有行,如如何讓grep的輸出排除字母
20:01:59:008 46ffd700 ETH - Total Speed: 126.291 Mh/s, Total Shares: 33, Rejected: 0, Time: 00:09
我想用grep &尾獲取包含"ETH - Total Speed"
最近的線,但只想輸出126.291
這是如何實現的?
在日誌中有行,如如何讓grep的輸出排除字母
20:01:59:008 46ffd700 ETH - Total Speed: 126.291 Mh/s, Total Shares: 33, Rejected: 0, Time: 00:09
我想用grep &尾獲取包含"ETH - Total Speed"
最近的線,但只想輸出126.291
這是如何實現的?
比方說,我們要輸出的第一個匹配的「ETH - 總速度」的最後20行中*值和履行本,而文件增長:
tail -f -n 20 logfile | grep --line-buffered -Po -m 1 'ETH - Total Speed: \K\S+(?= Mh/s)'
結果應印象下面這樣:
126.291
詳細:
--line-buffered
- 在輸出上使用行緩衝。這可能會導致性能損失-P
- 使PCRE
-m 1
- 停止讀取文件中的第一個匹配的行
謝謝,這給出了預期的輸出。我試圖使用這是一個自定義zabbix項目。在終端中運行時,它會等待下一次發生在日誌中的輸出,以便在通過zabbix代理運行時超時。它如何輸出最後找到的比賽,而不是等到下一場比賽發生? – sealfab
我相信-n選項是導致此行爲的原因,因爲日誌可能會累積超過20行不包含匹配項的行。我得到它使用tac logfile |工作grep -Po'ETH - 總速度:\ K \ S +(?= Mh/s)'|頭-1我現在可以使用tac,但有沒有辦法用尾巴做到這一點? – sealfab
謝謝,你能幫我理解「最後找到」和「最近」之間的區別是什麼,我認爲這是同樣的事情 – sealfab
你嘗試過什麼來解決這個後? 'tac + sed'會比'grep'容易.. – Sundeep
tail -f〜/ mine.log | grep,它將如何完成sed? – sealfab
添加超過幾行的樣本問題和預期的輸出...還添加你試圖質疑,而不是評論....因爲你正在使用'尾巴-f'我不知道該怎麼建議。 。你需要某種解決方案,它也會照顧緩衝... https://stackoverflow.com/questions/13858912/piping-tail-output-though-grep-twice – Sundeep