Как извлечь строки из файла журнала, используя инструменты командной строки Windows или командный файл? - PullRequest
1 голос
/ 21 января 2010

Я хотел бы извлечь определенные строки из файла журнала, используя встроенные средства командной строки Windows или пакетный файл (.bat). Вот пример файла журнала:

2009-12-07 14:32:38,669 INFO  Sample log
2009-12-07 14:32:43,029 INFO  Sample log
2009-12-07 14:32:45,841 DEBUG Sample log
2009-12-07 14:32:45,841 DEBUG Sample log
2009-12-07 14:32:52,029 WARN  Sample log
2009-12-07 14:32:52,466 INFO  Sample log

Как извлечь и напечатать строки с тегом «WARN»? Как это сделать с помощью PowerShell?

Ответы [ 6 ]

7 голосов
/ 21 января 2010

вы можете сделать это с помощью PowerShell, используя select-stirng:

select-String  WARN  *.log 
7 голосов
/ 21 января 2010

В одну сторону:

findstr WARN log.txt

Более сложный:

for /f "tokens=1,2,3,4* delims=, " %i in (log.txt) do @if "%l"=="WARN" echo %i %j %m

OUTPUT:
2009-12-07 14:32:52 Sample log
2 голосов
/ 21 января 2010

Если PowerShell (как предлагает Алон) не вариант, возможно, Logparser подойдет для ваших нужд: http://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07&displaylang=en

1 голос
/ 24 января 2010
Get-EventLog -LogName application -EntryType warning

и экспортируйте вывод, как вам нравится

1 голос
/ 21 января 2010

Есть несколько способов найти, найти то, что показывают другие. Или вы можете использовать vbscript

Set objFS=CreateObject("Scripting.FileSystemObject")
Set objArgs = WScript.Arguments
strFile= objArgs(0)
Set objFile = objFS.OpenTextFile(strFile)
Do Until objFile.AtEndOfStream
    strLine = objFile.ReadLine
    If InStr(strLine,"WARN") > 0 Then
        WScript.Echo strLine
    End If 
Loop

сохранить как mygrep_warn.vbs и в командной строке

c:\test> cscript //nologo mygrep_warn.vbs myfile.log

Другие способы, если вы можете загружать вещи и использовать GNU * nix инструменты, портированные на win32

C:\test>grep -i "warn" file
2009-12-07 14:32:52,029 WARN  Sample log

C:\test>gawk "BEGIN{IGNORECASE=1}/warn/" file
2009-12-07 14:32:52,029 WARN  Sample log
0 голосов
/ 21 января 2010

Вы всегда можете попробовать оригинальную команду DOS "найти", хотя она довольно дурацкая:

c:>find " WARN " filename.log

---------- FILENAME.LOG
2009-12-07 14:32:52,029 WARN  Sample log

c:>

Вы не можете использовать подстановочные знаки в имени файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...