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
- 📁 Как использовать grep рекурсивно c определенным расширением файлов
- 🐧 Как вывести первое совпадение и остановить grep
- 🐧 Как выполнить поиск Grep по всем файлам и во всех каталогах
- 🔍 Какой процесс прослушивает порт на Windows?
- 🕵️ Форензика оперативной памяти