⚙️ Как выполнить grep для поиска текста в PowerShell

by itisgood

grep – это мощная утилита для поиска текста в Linux, но она недоступна в Windows.

Хотя существуют сторонние порты и решения, PowerShell предлагает встроенные эквиваленты grep, которые выполняют ту же работу в ваших скриптах.

🔎 Пробуем свои силы, используя Volatility, для прохождения CTF

Использование findstr для поиска в PowerShell

В PowerShell есть несколько различных утилит поиска, каждая из которых обладает своими достоинствами.

Самая простая – findstr, которая является собственным исполняемым файлом windows.

Она хорошо подходит для замены grep для простых операций поиска в командной строке.

Например, вы можете передать ему вывод ls для поиска совпадений.

ls | findstr "foo"

Вы также можете искать несколько слов одновременно, использовать подстановочные знаки для соответствия чему угодно и использовать флаг /R для передачи основных регулярных выражений.

ls | findstr /R ba[a-z]\.txt

Хотя, если вы хотите искать явно , включая пробел, вам нужно использовать флаг /C::

ls | findstr /C:"foo"

Если вы привыкли к командной строке Linux и не хотите запоминать новую команду, вы можете настроить “grep” как алиас findstr, что позволит вам сохранить мышечную память.

new-alias grep findstr

Использование Select-String для поиска в PowerShell

Другой собственный метод, который предлагает PowerShell, – это команда Select-String, которая делает то же самое, что и findstr, но является командой PowerShell, а не исполняемым файлом Windows.

Это означает, что она лучше работает в сценариях PowerShell, и, что особенно важно, возвращает результат в виде объекта, который может быть красиво распечатан PowerShell.

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

Он работает так же, как findstr, и может принимать подстановочные знаки и регулярные выражения.

ls | Select-String foo
ls | Select-String -Pattern <regexPattern>

Вы можете использовать Select-String для поиска текста внутри файлов, передав ему аргумент -Path. Вы также можете использовать его с вводом, передаваемым другими командами, например Get-Content.

Select-String -Path ".\foo.txt" -Pattern ba.*

Если вы хотите использовать его в командной строке, вы также можете присвоить ему псевдоним “grep” для быстрого доступа.

remove-alias grep
new-alias grep Select-String
см. также:

You may also like

Leave a Comment