2017-08-10 5 views
1

私は約1kのログを毎晩取り出して解析します。3つの変数を解析して1つの文字列に集約するバッチ

考え方は、1つのキーワードで1つのすべてのログに対してfindstrを実行することです。例:

FINDSTR /s /i /c:"keyword" *.* >> Findstrresult.txt 

これが実行されると、「キーワード」が含まれているすべてを見ることができ、さらに解析することができます。

これは私が立ち往生した場所です。私は、自分が望む変数をそれぞれ引き出すことができます。例:

FOR /F "tokens=3 delims= " %%a in (Findstrresult.txt) do (
FOR /F %%b in ("%%a") do Echo %%~b >> Number.txt 
) 

この結果、1k個の数字が表示されます。

トークン/デリムが異なると、1k個の名前のリストが表示されます。

トークン/デリムが異なると、1k回のリストが作成されます。

それぞれは独自のテキストファイルです。私はそうだ

番号、名前、タイム

:私がやりたい何

はそのようなのような1つのテキストファイルに1つの文字列で隣同士にそれらを書くそれらを一つずつを引くです閉じる。私はちょっとアドバイスが必要です。

ありがとうございます。

+0

キーワードのログファイル構造について知らずに、あなたが意味することをgrepするのは難しいです。あなたの編集された質問に[mcve]をいくつかのサンプルラインでもっともうまく乗せてください。この 'sls * -Pattern 'キーワードのためにPwershellを使用したいと思います.1 | keyword2 | keyword3' -context 2,2' – LotPings

答えて

0
(
FOR /F "delims= " %%a in (Findstrresult.txt) do (
FOR /F "tokens=3 delims= " %%b in ("%%a") do ( 
    FOR /F "tokens,delims for name" %%n in ("%%a") do (
    FOR /F "tokens,delims for time" %%t in ("%%a") do (
    echo %%b,%%n,%%t 
    ) 
) 
) 
) 
)>combinedresult.txt 

%%aにあなたのファイルの時間で行を読んで、その後、%%a 3つの方法で解析します。入れ子になっているfor /fは、各メタ変数を有効範囲内に維持します。

括弧内のルーチン全体を囲むと、echoが収集され、新しいファイルにリダイレクトされます。これを行うには、>>を使用して既存のファイルに追加します。

+0

ありがとう、私はこれを試してみます。私はあなたにコメントする時間を割いていただき、ありがとうございます。 – Heave20

+0

私はあなたに感謝の借りがあります。そんなにあなたは私の知識を大きく広げてくれてありがとう。 – Heave20

関連する問題