GREP в PowerShell: Поиск текста в файле с Select-String

GREP в PowerShell: Поиск текста в файле с Select-String

В мире Linux/Unix для поиска определенного текста или ошибок в лог файлах используется команда grep. Grep позволяет быстро и удобно найти/выбрать любых данные из результатов выполнения другой команды:

command | grep search

В PowerShell для поиска текста в файлах можно использовать командлет Select-String.

Например, следующая команда выведет все строки текстового файла, содержащие ключевую фразу ERROR:

Select-String -Path c:tmpmakeapp_sxtracesxs.txt -Pattern "ERROR"

select-string поиск строки в файле с помощью PowerShell

Команда вывела номера строк, в которых содержится искомый тескт и их содержимое.

Если вам нужно выполнить поиск вхождения строки по всем txt файлам в определенном каталоге, выполните команду:

Select-String -Path c:tmp*.txt -Pattern "ERROR"

Такую команду удоно исопльзовать, если нужно выполнить поиск по всем файлам в каталоге. Например, для поиска в транспортных логах/smtp Exchange.

С помощью опций Exclude/Include можно включить, исключить определенннные файлы для поиска. Следующий пример выполнит поиск по всем txt и log файлам, имя которых не содежит copy:
$path = "c:tmp*"
Select-String -Path $path -Pattern "ERROR" -Include "*.txt","*.log" -Exclude "*copy*"

Предудущий пример выполняет поиск текста только в указанном каталоге. Для рекурсивного поиска по файлам во вложенных каталогах используйте Get-ChildItem:

Get-ChildItem -Path 'c:tmp' -Recurse -include "*.mp3","*.avi" -ErrorAction SilentlyContinue | Select-String -SimpleMatch "ERROR","WARNING"

Windows 10
GREP в PowerShell: Поиск текста в файле с Select-String