2017-06-21 28 views
1

我想製作一個簡單的批處理文件,它將首先在日誌中查找指定的文本行,然後將其分開,然後對其進行平均。我知道如何平均它,但發現並分離它是我需要知道如何去做的。這是日誌查找日誌中的一行並拆分文本批號

[20:36:33] [Client thread/INFO]: [CHAT] Some text here that I don't need 
[20:36:33] [Client thread/INFO]: [CHAT] Some more text here that I don't need 
[20:36:33] [Client thread/INFO]: [CHAT] Text I want $30023 
[20:36:33] [Client thread/INFO]: [CHAT] More text here that I don't need 
[20:36:33] [Client thread/INFO]: [CHAT] Text I want $40324 

我會再這樣下去了一會兒,我什麼先找到會說類似文字我想$,然後一個數字文本的樣機。然後,我想取這個數字,並用它之前說過的其他數字取平均值。我想要一個號碼的日誌文本中的消息最多會顯示30秒。

回答

1
setlocal 
set x=0 
set n=0 
for /f "delims=$ tokens=2" %%# in ('findstr /r /c:"Text I want \$[0-9]*$" "log.txt"') do (echo %%# 
set /a x+=%%# 
set /a n+=1) 
set /a x=(2*x+n)/(2*n) 
echo Average: %x% 

這將在log.txt中找到「Text I want $ NUBMER」並打印出「$」後面的數字。

編輯:我發現了一個限制 - 如果log.txt中的最後一行沒有換行符,即如果.txt的最後一行不是空的,最後一行將被忽略。管道type輸出到findstr計數器這樣的:

for /f "delims=$ tokens=2" %%# in ('type "log.txt"^|findstr /r /c:"Text I want \$[0-9]*$"') do ... 
+0

有了這個發現所有我想$ NUMBER或只是第一個文本? –

+0

@AnonyJack它將打印每個與模式相匹配的數字。 – Regejok

+0

我只能得到第一個文本我想$ NUMBER顯示是這應該如何工作? –