Аналогично grep в Windows
Обновлено: 21.11.2024
В настоящее время этот вопрос не подходит для нашего формата вопросов и ответов. Мы ожидаем, что ответы будут подкреплены фактами, ссылками или опытом, но этот вопрос, скорее всего, вызовет дебаты, аргументы, опросы или расширенное обсуждение. Если вы считаете, что этот вопрос можно улучшить и, возможно, снова открыть, посетите справочный центр для получения инструкций.
Ответы на этот вопрос созданы сообществом. Отредактируйте существующие ответы, чтобы улучшить этот пост. В настоящее время он не принимает новые ответы или взаимодействия.
Есть ли рекомендации по инструментам grep для Windows? В идеале те, которые могут использовать 64-разрядную ОС.
Конечно, я знаю о Cygwin, а также нашел PowerGREP, но мне интересно, есть ли там какие-то скрытые жемчужины?
28 ответов 28
FINDSTR довольно мощен, поддерживает регулярные выражения и имеет те преимущества, что уже есть на всех компьютерах с Windows.
Пример использования: findstr text_to_find * или для рекурсивного поиска findstr /s text_to_find *
Чего не хватает FINDSTR, так это возможности отображать только количество строк, содержащих строку. (например, grep -c). Если вам это нужно, вы можете использовать FIND /C.
Если вы хотите вернуть возможности FINDSTR (и ваш шаблон не является регулярным выражением), вы всегда можете с небольшим повторением соединить две команды вместе: findstr /s ".ini" *.rlog | найти /c ".ini"
Хорошо, findstr это не grep, как указали некоторые другие комментаторы. Но я даже не знал, что он существует, так что +1 вам, сэр, за публикацию!
Основываясь на рекомендациях в комментариях, я начал использовать grepWin, и это прекрасно и бесплатно.
(Я по-прежнему являюсь поклонником PowerGREP, но больше им не пользуюсь.)
Я знаю, что вы уже упоминали об этом, но PowerGREP великолепен.
- Щелкните правой кнопкой мыши папку, чтобы запустить для нее PowerGREP
- Используйте регулярные выражения или обычный текст.
- Укажите подстановочные знаки для файлов, которые необходимо включить или исключить.
- Найти и заменить
- Режим предварительного просмотра удобен тем, что вы можете убедиться, что заменяете то, что собираетесь заменить.
Теперь я понимаю, что другие инструменты grep могут делать все вышеперечисленное. Просто PowerGREP упаковывает все функции в очень простой в использовании графический интерфейс.
От тех же замечательных людей, которые принесли вам RegexBuddy и с которыми я не имею ничего общего, кроме любви к их вещам. (Следует отметить, что RegexBuddy включает базовую версию самого grep (для Windows) и это стоит намного меньше, чем PowerGREP.)
Дополнительные решения
Существующие команды Windows
Реализации команд Linux в Windows
Инструменты Grep с графическим интерфейсом
Дополнительные инструменты Grep
Мне бы хотелось найти графический интерфейс grep с открытым исходным кодом, такой же простой в использовании и такой же полнофункциональный, как PowerGREP, но я еще не нашел его :). У меня установлен Cygwin, и я тоже довольно часто использую grep из него.
@Wells — старый добрый *nix grep в Windows бесплатен через Cygwin или GnuWin32. FindStr и Find также поставляются с Windows. Grep с отличным графическим интерфейсом, возможностью замены и встроенной отменой, а также многими другими функциями. Да. это стоит вам немного больше.
@Wells, @Mike Clark, @Mark Biek: Я полагаю, что, когда этот ответ был опубликован, не было хороших бесплатных инструментов grep с графическим интерфейсом для Windows, но это уже не так. grepWin имеет все функции, перечисленные в этом ответе, и теперь могут быть и другие конкуренты.
@Wells, ненавидеть Windows из-за того, что инструмент Grep стоит 159 долларов, это все равно, что ненавидеть автомобили из-за дорогих напольных ковриков.
@Wells и голосующие: в чем проблема? Несколько других инструментов GREP для Windows так же бесплатны, как и для unix/linux. Действительно, это то, что мне нравится в экосистеме Windows — много бесплатного, если это ваш главный критерий, И экосистема часто поддерживает платных разработчиков за изучение расширенного набора функций, таких как PowerGREP. PowerGREP может не всем понравиться (иногда его пользовательский интерфейс подавляет), но его продуманность действительно полезна.
GrepWin является бесплатным и открытым исходным кодом (GPL)
Я использовал grepWin, написанный одним из разработчиков TortoiseSVN. Это работает в Windows.
И это бесплатно, и оно способно выполнять поиск в скрытых каталогах/файлах, что PowerGrep не может делать должным образом.
Это хорошо, но дает только одну строку контекста, и вы не можете увидеть этот контекст, пока не завершится весь поиск.
Кажется, это хороший и простой инструмент. Но мне нужны были результаты в файле, и, похоже, у меня нет возможности экспортировать. Только по этой причине я выбрал AstroGrep.
Обновление, июль 2013 г.:
Еще один инструмент grep, который я сейчас постоянно использую в Windows, — это AstroGrep:
Его способность показывать мне больше, чем просто поиск строки (т. е. --context=ЧИСЛО команды grep из командной строки), неоценима.
И это быстро. Очень быстро, даже на старом компьютере с не SSD-накопителем (я знаю, раньше делали этот жесткий диск с вращающимися дисками, называемыми пластинами, правда?)
Это бесплатно.
Он портативный (простой zip-архив для распаковки).
Исходный ответ, октябрь 2008 г.
Gnu Grep в порядке
Все обычные параметры здесь.
Это, в сочетании с gawk и xargs (включая "find" из GnuWin32), позволяет писать сценарии так же, как в Unix!
Я только начал искать замену Gnu Grep, так как версия для Windows, похоже, не может обрабатывать мои текстовые файлы размером 10 МБ. Он просто сидит и делает вид, что ничего не нашел. Если я уменьшу размер файла, он начнет работать.
Здравствуйте, VonV, ваша ссылка "обычных опций" стала: 404 - Страница не найдена. Пожалуйста, отредактируйте свой ответ.
AstroGrep хорош, но, к сожалению, в настоящее время в нем отсутствует функция «Найти и заменить», что для меня является препятствием
Командлет PowerShell Select-String отлично работал в версии 1.0, но значительно лучше в версии 2.0. Наличие PowerShell, встроенного в последние версии Windows, означает, что ваши навыки здесь всегда будут полезны, даже без предварительной установки чего-либо.
- -Контекст: позволяет видеть строки до и после строки соответствия.
- -AllMatches: позволяет увидеть все совпадения в строке (ранее можно было увидеть только первое совпадение в строке)
- -NotMatch: эквивалентно grep -v o
- -Кодировка: чтобы указать кодировку символов.
Я считаю целесообразным создать функцию gcir для Get-ChildItem -Recurse. , с интеллектом для правильной передачи параметров и псевдонимом ss для Select-String . Итак, вы пишете:
Пример эквивалента grep -R: Get-ChildItem -recurse -include *.txt | Select-String -CaseSenstive "SomeString"
Мне очень нравятся многие функции, представленные в PS, но почему каждая команда должна быть длиннее средней программы на языке COBOL?
@evilcandybag: Благодаря отличному автозаполнению, в том числе автозаполнению имен параметров, ввод командной строки PowerShell стал быстрым и легким, и я могу прочитать результат.
@jslatts: или вы можете использовать псевдонимы и частичные имена параметров, и это будет ls . *.txt -r| sls -ca "НекотораяСтрока"
Возможно, он не совсем относится к категории grep, но я не мог обойтись в Windows без утилиты под названием AgentRansack. Это утилита поиска в файлах с графическим интерфейсом и поддержкой регулярных выражений.
Очень просто щелкнуть папку правой кнопкой мыши, нажать "обыскать..." и найти файлы, содержащие то, что вы ищете. Это также очень быстро.
Я почти уверен, что они уже исправили это. Моя основная претензия к BareTail заключается в том, что вы не можете «фильтровать» журнал, чтобы скрыть (а не только покрасить) ненужные строки.
PowerShell упоминался несколько раз. Вот как вы могли бы на самом деле использовать его по-гречески:
Он рекурсивно ищет SomeString во всех текстовых файлах в текущем дереве каталогов с учетом регистра.
А еще лучше запустите это:
Затем, чтобы сделать его по-настоящему волшебным, добавьте псевдоним функции в свой профиль PowerShell, и вы сможете почти притупить боль от отсутствия надлежащих инструментов командной строки.
Псевдонимы можно использовать для уменьшения объема ввода. Например, Get-ChildItem имеет три: ls, dir и gci.
Это бесплатное приложение с открытым исходным кодом и простым интерфейсом. Я постоянно использую его для поиска кода.
Git в Windows = grep в cmd.exe
Я только что узнал, что установка Git даст вам несколько основных команд Linux: cat, grep, scp и другие полезные.
Установите, затем добавьте папку Git bin в PATH, и ваш cmd.exe получит базовые функции Linux!
ack хорошо работает в Windows (если у вас есть Perl). Я считаю, что во многих случаях это лучше, чем grep.
Cygwin включает grep. Все инструменты GNU и Unix прекрасно работают в Windows, если вы установите Cygwin.
dnGREP — это инструмент grep с открытым исходным кодом для Windows. Он поддерживает ряд интересных функций, в том числе:
- Отменить для замены
- Возможность поиска, щелкнув правой кнопкой мыши папку в проводнике.
- Параметры расширенного поиска, такие как фонетический поиск и xpath
- Поиск в файлах PDF, архивах и документах Word
ИМХО, у него тоже приятный и понятный интерфейс :)
Я всегда использую WinGREP, но у меня были проблемы с тем, что он не пропускал файлы.
Я использую wingrep в течение нескольких лет, это здорово, за исключением того, что окна выбора каталога слишком малы
У него есть приятная функция, которой нет во многих инструментах grep, — возможность инвертировать совпадения. Удобно, например, для поиска HTML-файлов без содержимого.
Однако я заметил очень раздражающую особенность WinGrep.Похоже, он блокирует все найденные совпадения, поэтому, если вы попытаетесь удалить один из этих файлов в проводнике Windows, вы не сможете это сделать, пока не закроете WinGrep.
Если бы он мог искать в результатах поиска, еще больше сужая список, это был бы идеальный инструмент для меня.
Ну, кроме порта GNU grep для Windows, есть также grep от Borland (очень похожий на GNU), доступный в бесплатном компиляторе Borland Free C++ Compiler (это бесплатное ПО с инструментами командной строки).
Я уже довольно давно успешно использую утилиты GNU для Win32, и у них есть хороший grep, tail и другие удобные утилиты GNU для Win32. Я избегаю упакованной оболочки и просто использую исполняемые файлы прямо в командной строке Win32.
Упакованный хвост тоже неплохое маленькое приложение.
Я автор Aba Search and Replace. Как и PowerGREP, он поддерживает регулярные выражения, сохранение шаблонов для дальнейшего использования, отмену замен, предварительный просмотр с подсветкой синтаксиса для HTML/CSS/JS/PHP, различные кодировки, включая UTF-8 и UTF-16.
По сравнению с PowerGREP, графический интерфейс менее загроможден. Aba мгновенно начинает поиск по мере того, как вы вводите шаблон (постепенный поиск), поэтому вы можете поэкспериментировать с регулярными выражениями и сразу увидеть результаты.
Приглашаем вас попробовать мой инструмент; Буду рад ответить на любые вопросы.
Мне нужен был бесплатный инструмент grep для Windows, который позволял бы щелкнуть правой кнопкой мыши по папке и выполнить поиск по регулярному выражению в каждом файле — без ворчащего экрана.
Ниже приведено быстрое решение, основанное на findstr, упомянутом в предыдущем сообщении.
Создайте текстовый файл где-нибудь на жестком диске, где вы будете хранить долгоживущие инструменты. Переименуйте в .bat или .cmd и вставьте в него следующее:
Затем перейдите в папку SendTo. В Windows 7 перейдите к %APPDATA%\Microsoft\Windows\SendTo и перетащите ярлык пакетного файла в эту папку SendTo.
Я переименовал ярлык в 1 GREP, чтобы он оставался вверху списка отправки.
Следующее, что я хотел бы сделать, это направить вывод findstr через что-то, что будет генерировать файл html, чтобы вы могли щелкнуть каждую строку вывода, чтобы открыть этот файл. Кроме того, я не думаю, что это работает с ярлыками для папок. Мне нужно проверить параметр и посмотреть, содержит ли он «.lnk».
Команда grep в Linux широко используется для анализа файлов и поиска полезных данных в выходных данных различных команд.
Команда findstr является эквивалентом Windows grep в командной строке Windows (CMD).
В Windows PowerShell альтернативой grep является команда Select-String.
Ниже вы найдете несколько примеров того, как выполнить «grep» в Windows, используя эти альтернативы.
Полезный совет. Эквивалент команды Windows touch в CMD и PowerShell! Читать далее →
Команда Grep в Windows
Соберите вывод команды netstat для определенного порта:
Если команда в PowerShell возвращает какие-то объекты, перед синтаксическим анализом их следует преобразовать в строки с помощью команды Out-String -Stream:
Выполните поиск файла по шаблону, соответствующему регулярному выражению (без учета регистра):
Параметры, используемые командой findstr в приведенном выше примере:
Показать справку по эквивалентам команды Windows grep:
Полезный совет: Эквивалент команды Windows cat в CMD и PowerShell! Читать далее →
14 ответов на вопрос «Windows: эквивалент `Grep` — CMD и PowerShell»
Привет. Я попытался ввести командную строку
` C:\> netstat -na | findstr «2020»` и введите, и это не работает. Я хочу искать в каталогах документа Word некоторые строки. Кажется, я что-то упустил в ваших объяснениях
Отличный текст. Я нашел именно то, что мне было нужно.
Одно исправление, однако, заключается в вызове справки findstr, которая соответствует обычной форме других команд Windows: findstr /?
Спасибо!
PS C:\Users\Administrator> auditpol.exe /get /category:* | findstr «Репликация службы каталогов»
Службы сертификации Нет аудита
Изменения службы каталогов Нет аудита
Репликация службы каталогов Нет аудита
Подробная репликация службы каталогов Нет аудита
Доступ к службе каталогов Нет Аудит
Операции с билетами службы Kerberos Без аудита
Служба проверки подлинности Kerberos Без аудита
мне нужно точное совпадение, пожалуйста, помогите мне, это срочно
используйте find вместо findstr (findstr вернет все совпадения с каталогом, службой или репликацией, find вернет совпадение всей строки (с учетом регистра). Используйте find -i, чтобы игнорировать регистр.
Мне нужен один вывод, который точно соответствует слову в слове
auditpol.exe /get /category:* | findstr /C:"Репликация службы каталогов"
Знаете ли вы, почему команда Select-String в PowerShell возвращает только совпадение с шаблоном, а findstr возвращает всю строку целиком, как это делает grep?
Например:
Если я использую Set-Alias -NAME grep -Value Select-String
'Get-Alias |Select-String grep' вернет:
grep
'Get-Alias |findstr grep' вернет:
Alias grep -> Select-String
Есть ли способ получить тот же вывод Select-String, но только для использования команд PowerShell?
Проблему вызывает поведение команды get-alias.
Сначала преобразуйте вывод в строки:
‘Get-Alias | Out-String -поток | Select-String grep’
Большое спасибо. полезно для меня.
Отличная информация, которая может помочь мне разгадать загадку. спасибо
Я пытаюсь создать командный файл для win 10, чтобы найти конкретный процесс, который постоянно «зависает». Дело в том, что его pid меняется при каждом использовании. Я бывший программист начального уровня для среднего уровня, и я «зависаю» на многих процессах, поскольку я разрабатываю банальное программное обеспечение в старости. Мне нужно использовать что-то вроде списка задач, чтобы перечислить все НЕ ОТВЕЧАЮЩИЕ процессы, найти процесс или PID, который мне нужно убить, и отправить эту информацию в taskkill, чтобы выполнить работу. Если кто-нибудь прочитает это и может помочь мне с приличным пакетным файлом, я буду очень признателен. Я уже прочитал много статей, но не могу заставить его работать. Заранее спасибо лучшему человеку, которого я могу честно назвать на данный момент лучшим человеком в мире 🙂
У меня есть большой TXT-файл с десятками тысяч строк.
Я хочу найти все 500 или около того строк, содержащих определенную строку (например, «всплывающее окно»), и извлечь эти строки в другой выходной файл для дальнейшей обработки. Строка уникальна для строк, которые я хочу извлечь, и встречается только один раз в каждой такой строке.
Я уже много лет не программирую (макросы на Фортране, Бейсике, Excel), но хочу научиться чему-то современному. Я работаю на ноутбуке с Win10 и ищу совета: что было бы самым простым и быстрым (Python, Perl, Powershell, …), что позволило бы мне сделать вышеперечисленное?
Команда powershell Select-String отлично справляется с этим с правильным регулярным выражением, как и большинство других языков оболочки. В powershell вы можете запустить эту команду:
Выберите строку ‘^.*YOURSTRING.*’ c:\PATH\TO\INPUTFILE.TXT | % > c:\PATH\TO\OUTPUTFILE.TXT
Краткий обзор этой команды:
* Регулярное выражение ^.*YOURSTRING.* выбирает всю строку, содержащую YOURSTRING
* % выбирает только строки регулярного выражения; без него ваш выходной файл будет иметь имя файла и номер строки в каждой строке
* > записывает вывод в файл
Есть ли аналог grep командной строки для Windows 7? То есть я хочу отфильтровать результаты команды:
Использование Bash:
Что будет из командной строки Windows?
не путайте ms-dos с командной строкой. + использование find и findstr и даже grep для окон... наверняка легко найти с помощью быстрого поиска. есть даже таблицы эквивалентных команд в linux и windows. также ваш пример bash даже не относится к bash .. просто, я полагаю, * nix OS.
13 ответов 13
Похоже на Findstr. Я постоянно использую его как приблизительный эквивалент grep на платформе Windows.
@VictorGrazi Сначала так и было, см. эту статью. Первоначально он назывался qgrep, но позже был переименован.
/B : отображать только имена папок. /R : Обрабатывает строки поиска как регулярные выражения. Это значение по умолчанию. /C : использует указанный текст в качестве буквальной строки поиска.
Есть несколько возможностей:
- Используйте порт команды 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, хотя все они являются программами с графическим интерфейсом, а не программами с TUI.
- Используйте поставляемые find и findstr . Обратите внимание, что синтаксис отличается от grep , как и возможности регулярных выражений.
Вы пишете, что я не вижу perl в SUA C:\Windows\SUA>dir perl* /s/b Файл не найден и запущен, например. c оболочки SUA я не вижу его в /bin
Если команды PowerShell разрешены, используйте
Учтите, что псевдоним sls определяется только в PowerShell версии 3.0. Вы можете добавить псевдоним, чтобы меньше печатать:
Чтобы запустить команду PowerShell непосредственно из cmd, используйте
В своей ранней версии вы написали MS-DOS, насколько я знаю, есть только FIND. Но это древняя ОС, которая больше не используется.
В командной строке Windows NT (например, Win2K и Win XP и более поздние версии, например, win7,win10) вы можете использовать find и findstr, а если вы загружаете GnuWin32, то grep
Основные отличия заключаются в том, что findstr поддерживает некоторые регулярные выражения. Grep лучше всего поддерживает регулярные выражения.
найти /? и найтистр/? показывает, что делают переключатели.
Gnuwin32 имеет "пакеты". Если вы загружаете GnuWin32, я рекомендую пакет coreutils для набора основных полезных утилит, с которыми вы знакомы, но grep не входит в этот пакет, это отдельный пакет.
Добавлено
Грэп GnuWin32, когда я последний раз проверял, устарел. Cygwin grep гораздо более актуален. Также имейте в виду, что многие люди используют виртуальные машины, а не порты Windows для команд *nix.
Краткое руководство по переносу команды unix grep в ОС Windows. Используйте инструмент findStr, который позволяет выполнять команды unix grep в Windows с большей гибкостью.
1. Обзор
В этом руководстве мы узнаем, как использовать команду unix grep в Windows для эффективного поиска файлов и что такое инструмент или команда, эквивалентная grep для Windows.
Когда вы используете компьютер с Windows, вы много раз могли сталкиваться с ситуациями, требующими поиска фрагмента текста на компьютере с Windows.
Проведя исследование, мы обнаружили, что существует инструмент findstr для операционной системы Windows, который соответствует команде grep.
2. Фильтрация результатов
unix grep: используйте флаг -E с командой grep для передачи нескольких шаблонов, разделенных символом | символ трубы. Этот шаблон должен быть заключен в двойные кавычки.
windows findstr: просто нужно передать разделитель пробела в команду findstr и сохранить шаблоны в двойных кавычках.
3. Путем поиска в файлах
4. Путем поиска в списке файлов
5. Команда справки
6. Заключение
В этой статье мы увидели, как искать файлы в Windows так же, как команда unix grep, и показали примеры.
Ярлыки:
О нас
Учебник по Java 8
- Новые возможности Java 8
- Примеры программ Java 8 до и после Lambda
- Лямбда-выражения Java 8 (полное руководство)
- Правила и примеры лямбда-выражений Java 8
- Java 8. Доступ к переменным из лямбда-выражений
- Справочники по методам Java 8
- Функциональные интерфейсы Java 8
- Java 8 – Base64
- Java 8 по умолчанию и статические методы в интерфейсах
- Java 8 (дополнительно).
- Новый API даты и времени Java 8
- Java 8 – Nashorn JavaScript
Учебное пособие по потокам Java
- Как создать тему?
- Как убить тред?
- Приоритеты потоков
- Последовательность жизненного цикла состояний потока
- Соединение потоков()
- interrupt() VS interrupted() VS isInterrupted()
- Создать поток без реализации Runnable
- Создать поток без расширения класса потока
- Умножение матриц с потоком (эффективный способ)
- Как отложить выполнение потока?
Конверсии Kotlin
- Трассировка стека ошибок в строку
- Строка до даты
- Список в массив
- Преобразовать строку в число с плавающей запятой
- Преобразовать список в карту
- Преобразовать карту в список
Программы Kotlin
Преобразование Java
- Список Java 8 для сопоставления
- Строка Java 8 до даты
- Массив Java 8 для списка
- Java 8 Список в массив
- Java 8 Любой примитив в строку
- Java 8 итерируется для потоковой передачи
- Поток Java 8 в IntStream
- Строка в нижнем регистре
- Входной поток в файл
- Примитивный массив для списка
- Преобразование Int в строку
- Строка в ArrayList
Java Строковый API
- charAt()
- chars() — Java 9
- codePointAt()
- codePointCount()
- codePoints() — Java 9
- сравнить()
- сравнить с игнорекейсом
- конкат()
- содержит()
- contentEquals()
- copyValueOf()
- describeConstable() — Java 12
- заканчивается()
- равно()
- equalsIgnoreCase()
- формат()
- получить байты()
- получить символы()
- хэш-код()
- отступ() — Java 12
- индекс()
- стажер()
- isBlank() — Java 11
- пусто()
- присоединиться()
- последнийИндексОф()
- длина()
- линии()
- совпадает()
- смещениеByCodePoints()
- regionMatches()
- повторить()
- заменитьFirst()
- заменить()
- заменитьВсе()
- разрешитьConstantDesc()
- разделить()
- strip(), stripLeading(), stripTrailing()
- подстрока()
- toCharArray()
- toLowerCase()
- преобразование() — Java 12
- значение()
Весенняя загрузка
$show=Java%20Программы
$show=Котлин
Краткое руководство по переносу команды unix grep в ОС Windows. Используйте инструмент findStr, который позволяет выполнять команды unix grep в Windows с большей гибкостью.
Читайте также: