Grep, эквивалентный для Windows 7?

Существует ли командная строка grep эквивалентна для Windows 7? Таким образом, я хочу отфильтровать результаты команды:

Использование Bash:

ls | grep root

Чем это было бы от командной строки Windows?

243
задан 06.10.2015, 21:08

4 ответа

Findstr звучит так, как ты хочешь. Я постоянно использую его как примерный grep-эквивалент на Windows-платформе.

Другой пример с трубами:

C:\> dir /B | findstr /R /C:"[mp]"
282
ответ дан 07.12.2019, 07:39

Есть несколько возможностей:

  • Использовать порт команды Unix grep. Есть несколько вариантов. Часто упоминаются GNUWin32, cygwin и unxutils. Менее известные, но в некотором роде лучше, инструменты из набора утилит SFUA , которые запускаются в Подсистеме для UNIX-приложений , которая поставляется в комплекте с Windows 7 Ultimate edition и Windows Server 2008 R2. (Для Windows XP можно скачать и установить службы для UNIX версии 3.5 ). Этот инструментарий имеет большое количество инструментов TUI командной строки, от mv и du, через оболочки Korn и C, до perl и awk. Он поставляется как со вкусом x86-64 и IA64, так и с вкусом x86-32. Программы работают в родном для Windows POSIX окружении, а не с эмуляторными DLL (такими как cygwin1.dll), слоируя вещи поверх Win32. И да, в инструментарии есть grep, а также около 300 других.
  • Используйте одну из многих нативных команд Win32 grep, которые люди написали и опубликовали. Например, у Тима Чаррона есть нативная Win32-версия модифицированного GNU grep. Есть также PowerGREP, Bare Grep, grepWin, AstroGrep и dnGrep, хотя это все GUI-программы, а не TUI-программы.
  • Используйте прилагаемые find и findstr. Синтаксис отличается от синтаксиса grep, обратите внимание, как и возможность регулярных выражений.
44
ответ дан 07.12.2019, 07:39

В вашей ранней ревизии, которую вы написали MS-DOS, есть только FIND, насколько я знаю. Но это древняя операционная система, которая больше не используется.

В командной строке Windows NT (например, Win2K и выиграть XP и позже, так что, например, win7,win10), вы можете использовать find и findstr, и если вы загрузите GnuWin32, то grep

Основное отличие заключается в том, что findstr имеет поддержку некоторых регулярных выражений. Лучше всего grep поддерживает регулярные выражения.

C:\>dir | find "abc"
C:\>dir | find /i "abc"

find /? и findstr /? показывает, что делают переключатели.

Gnuwin32 имеет "пакеты". Если вы загружаете GnuWin32, я предлагаю пакет coreutils для набора основных полезных утилит, которые вам знакомы, но grep не в этом пакете, это его собственный пакет.

Добавленный

grep GnuWin32, последний раз, когда я проверял, старый. Греп Сигвина гораздо более современный. Также имейте в виду, что многие люди используют виртуальные машины, а не windows-порты *nix-команд.

.
18
ответ дан 07.12.2019, 07:39

Если вы предпочитаете использовать grep, а не findstr, то в UnxUtils есть одна версия файла .exe, так что он портативен и нет необходимости его устанавливать, или использовать что-то вроде Cygwin.

.
9
ответ дан 07.12.2019, 07:39

Теги

Похожие вопросы