1 (изменено: Alex_12095, 2014-04-29 08:41:58)

Тема: PowerShell: Чтение n последних строк в файле

День добрый, прочитал статью, мне очень помогла, реализовал такой скрипт

$c= (get-content -path d:\vad.log)[-10..-1]
[Regex]::Matches($c,'erorr')-join', ' 

Выводит из файла 10 последних строк и ищет в нем слова "erorr".
Может подскажете каким образом организовать что бы он искал сразу в нескольких файлах кол-во файлов может меняться, файлы в одной папке нужен отбор типа *.log .
Благодарю всех ответивших!

2

Re: PowerShell: Чтение n последних строк в файле

Alex_12095, не совсем понятно отчего Вы пишете в данной теме, когда проще и логичней было бы открыть новую тему, ведь вопрос в большей степени по PowerShell. Ответ на Ваш вопрос:

 gci X:\folder\*.log | % { (gc $_)[-10..-1] -match '^erorr$' -join ', '}

3

Re: PowerShell: Чтение n последних строк в файле

Перенёс из CMD/BAT: Чтение n первых/последних строк в файле; число строк в файле.

4

Re: PowerShell: Чтение n последних строк в файле

greg zakharov пишет:

Alex_12095, не совсем понятно отчего Вы пишете в данной теме, когда проще и логичней было бы открыть новую тему, ведь вопрос в большей степени по PowerShell. Ответ на Ваш вопрос:

 gci X:\folder\*.log | % { (gc $_)[-10..-1] -match '^erorr$' -join ', '}

<Благодарю за ответ, Написал в той теме из-за того, что нужную информацию по powershell нашел в той теме.
Извиняюсь, но я немного не правильно поставил вопрос, необходимо что бы результатом было сообщение типа
"в этом файле есть erorr, а в этом нет" Я только открыл для себя powershell поэтому буду рад и материалам по данной реализации, читал литературу, гуглил, но не нашел способов реализации данной задачи

5

Re: PowerShell: Чтение n последних строк в файле

Alex_12095 пишет:

Я только открыл для себя powershell поэтому буду рад и материалам по данной реализации, читал литературу, гуглил, но не нашел способов реализации данной задачи

Что касается литературы, то она в большей степени является вольным пересказом встроенной документации, так что от ее чтения лучше воздержаться, доверившись главным образом командам Get-Help или man (например, man about_* и т.д.) Прочий материал - спецификация платформы .NET Framework и наличие IL DASM. Все остальное приложится.

Alex_12095 пишет:

...необходимо что бы результатом было сообщение типа "в этом файле есть erorr, а в этом нет"

Задайте условие через if..else или switch. Например:

gci X:\folder\*.log | % {if ((gc $_)[-10..-1] -match '^erorr$') {'File {0} contains erorr' -f $_} else {'File {0} does not contain erorr' -f $_}}

6

Re: PowerShell: Чтение n последних строк в файле

greg zakharov, Благодарю за помощь!

7

Re: PowerShell: Чтение n последних строк в файле

Добрый день , у меня похожая задача только вот ни как не могу найти как вместо "contains erorr" выводить строку с ошибкой полностью .

8

Re: PowerShell: Чтение n последних строк в файле

2ivashkindmitriy
Есть как минимум два способа. Первый заключается в использование RichTextBox, второй - нахождение совпадения и установления границ строки с совпадением.