Какие хорошие инструменты grep для Windows?

277

Любые рекомендации по grep средствам для Windows? Идеально те, которые могут использовать 64-битную ОС.

Я знаю Cygwin, и также нашел PowerGREP, но мне интересно, есть ли там скрытые камни?

Теги:
grep

28 ответов

184
Лучший ответ

Основываясь на рекомендациях в комментариях, я начал использовать grepWin, и это фантастично и бесплатно.


(Я все еще поклонник PowerGREP, но я больше не использую его.)

Я знаю, что вы уже упомянули об этом, но PowerGREP awesome.

Некоторые из моих любимых функций:

  • Щелкните правой кнопкой мыши папку, в которую будет запускаться PowerGREP.
  • Использовать регулярные выражения или литералы.
  • Определить шаблоны для включения и исключения файлов
  • Поиск и замена
  • Режим предварительного просмотра хорош, потому что вы можете убедиться, что вы заменяете то, что хотите.

Теперь я понимаю, что другие инструменты grep могут делать все вышеперечисленное. Просто PowerGREP объединяет все функциональные возможности в очень простой в использовании графический интерфейс.

От тех же замечательных людей, которые принесли вам RegexBuddy и у кого нет привязанности к вам, не любите их. (Следует отметить, что RegexBuddy включает в себя базовую версию grep (для Windows), и она стоит намного меньше, чем PowerGREP.)


Дополнительные решения

Существующие команды Windows

Реализации команд Linux в Windows

Инструменты Grep с графическим интерфейсом

Дополнительные инструменты Grep

  • 4
    Я хотел бы найти grep gui с открытым исходным кодом, такой же простой в использовании и полнофункциональный, как PowerGREP, но я еще не нашел его :). У меня действительно установлен Cygwin, и я тоже использую grep.
  • 21
    @Wells - старый добрый * nix grep в Windows бесплатный через Cygwin или GnuWin32. FindStr и Find также поставляются с Windows. Grep с отличным графическим интерфейсом, возможностью замены и встроенной отменой, а также многими другими функциями ... да ... это стоит вам немного больше.
Показать ещё 10 комментариев
305

FINDSTR довольно мощный, поддерживает регулярные выражения и имеет преимущества быть на всех машинах Windows уже.

c:\> FindStr /?

Searches for strings in files.

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]
        [/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
        strings [[drive:][path]filename[ ...]]

  /B         Matches pattern if at the beginning of a line.
  /E         Matches pattern if at the end of a line.
  /L         Uses search strings literally.
  /R         Uses search strings as regular expressions.
  /S         Searches for matching files in the current directory and all
             subdirectories.
  /I         Specifies that the search is not to be case-sensitive.
  /X         Prints lines that match exactly.
  /V         Prints only lines that do not contain a match.
  /N         Prints the line number before each line that matches.
  /M         Prints only the filename if a file contains a match.
  /O         Prints character offset before each matching line.
  /P         Skip files with non-printable characters.
  /OFF[LINE] Do not skip files with offline attribute set.
  /A:attr    Specifies color attribute with two hex digits. See "color /?"
  /F:file    Reads file list from the specified file(/ stands for console).
  /C:string  Uses specified string as a literal search string.
  /G:file    Gets search strings from the specified file(/ stands for console).
  /D:dir     Search a semicolon delimited list of directories
  strings    Text to be searched for.
  [drive:][path]filename
             Specifies a file or files to search.

Use spaces to separate multiple search strings unless the argument is prefixed
with /C.  For example, 'FINDSTR "hello there" x.y' searches for "hello" or
"there" in file x.y.  'FINDSTR /C:"hello there" x.y' searches for
"hello there" in file x.y.

Regular expression quick reference:
  .        Wildcard: any character
  *        Repeat: zero or more occurances of previous character or class
  ^        Line position: beginning of line
  $        Line position: end of line
  [class]  Character class: any one character in set
  [^class] Inverse class: any one character not in set
  [x-y]    Range: any characters within the specified range
  \x       Escape: literal use of metacharacter x
  \<xyz    Word position: beginning of word
  xyz\>    Word position: end of word

Пример использования: findstr text_to_find * или для поиска рекурсивно findstr /s text_to_find *

  • 2
    В FINDSTR отсутствует опция отображения только количества строк, содержащих строку. (например, grep -c) Если вам это нужно, вы можете использовать FIND / C.
  • 2
    Если вы хотите вернуть питание FINDSTR (и ваш шаблон не является регулярным выражением), вы всегда можете, с небольшим повторением, объединить две команды в цепочку: findstr / s ".ini" * .rlog | найти / с ".ini"
Показать ещё 13 комментариев
98

GrepWin Свободный и открытый источник (GPL)

Изображение 7268 Я использую grepWin, который был написан одним из парней из черепах. Работает ли в Windows...

http://stefanstools.sourceforge.net/grepWin.html

  • 2
    И это бесплатно, и он способен искать в скрытых каталогах / файлах, которые PowerGrep не в состоянии сделать правильно ...
  • 3
    Кажется, не имеет интерфейса командной строки.
Показать ещё 6 комментариев
53

Обновление июль 2013:

Еще один инструмент grep, который я использую все время в Windows, AstroGrep:

Изображение 7269

Его способность показывать мне больше, чем просто поиск по строке (т.е. --context = NUM ​​командной строки grep) неоценим.
И это быстро. Очень быстро, даже на старом компьютере с не-SSD диск (я знаю, они использовали этот жесткий диск с вращающимися дисками, называемый platters, сумасшедший правильно?)

Это бесплатно. Он переносимый (простой ZIP-архив для распаковки).


Оригинальный ответ Октябрь 2008

Изображение 7270Gnu Grep в порядке

Вы можете скачать его, например, здесь: (сайт ftp)

Здесь обычные параметры.

Это в сочетании с gawk и xargs (включает "find", от GnuWin32), и вы действительно можете script, как вы были в Unix!

См. также параметры, которые я использую для рекурсивного grep:

grep --include "*.xxx" -nRHI "my Text to grep" *
  • 0
    Я только начал искать замену Gnu Grep, поскольку версия для Windows, похоже, не в состоянии обрабатывать мои текстовые файлы размером 10 Мб. Он просто сидит там и делает вид, что ничего не нашел. Если я уменьшу размер файла, он начнет работать.
  • 0
    Здравствуйте, VonV, ваша ссылка "обычных опций" стала: 404 - Страница не найдена. Пожалуйста, рассмотрите возможность редактирования вашего ответа.
Показать ещё 10 комментариев
30

Командлет PowerShell Select-String был в порядке в версии 1.0, но значительно лучше для v2.0. Наличие PowerShell, встроенного в последние версии Windows, означает, что ваши навыки здесь всегда будут полезны, без предварительной установки.

Новые параметры, добавленные в Select-String: командлет Select-String теперь поддерживает новые параметры, такие как:

  • -Context: позволяет видеть строки до и после строки соответствия
  • -AllMatches: позволяет видеть все совпадения в строке (раньше вы могли видеть только первое совпадение в строке)
  • -NotMatch: эквивалент grep -v o
  • -Encoding: указать кодировку символов

Я считаю целесообразным создать функцию gcir для Get-ChildItem -Recurse ., чтобы smarts правильно передал параметры и псевдоним ss для Select-String. Итак, вы пишете:

gcir *.txt | ss foo

  • 3
    Пример grep -R equivant: Get-ChildItem -recurse -include * .txt | Select-String -CaseSenstive "SomeString"
  • 6
    Мне действительно нравится множество функций, представленных в PS, но почему каждая команда должна быть длиннее, чем обычная программа на COBOL?
Показать ещё 3 комментария
22

Он не может точно попадать в категорию "grep", но я не мог попасть в Windows без утилиты под названием AgentRansack, Это gui-based утилита "find in files" с поддержкой regex. Он мертв просто щелкнуть правой кнопкой мыши по папке, нажать "ransack.." и найти файлы, содержащие то, что вы ищете. Чрезвычайно быстрый тоже.

  • 1
    Я пытался вспомнить название этого инструмента в течение последних 3 дней. Люблю этот инструмент. Благодарю.
  • 0
    К сожалению, он не может открыть внешний текстовый редактор в соответствующей строке.
Показать ещё 4 комментария
19

Baregrep (Baretail хорошо тоже)

  • 0
    не работает на win7 64 bit; (
  • 0
    Я почти уверен, что они это уже исправили. Моя главная претензия к BareTail заключается в том, что вы не можете «отфильтровать» журнал, чтобы скрыть (не только цвет) нерелевантные линии.
Показать ещё 5 комментариев
17

Прошло пару лет с тех пор, как вы задали вопрос, но я бы рекомендовал AstroGrep (http://astrogrep.sourceforge.net).

Он бесплатный, с открытым исходным кодом и имеет простой интерфейс. Я использую его для поиска кода все время.

  • 0
    Спасибо за этот отличный инструмент, любящий его.
  • 0
    но он не ищет в PDF
16

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

Get-ChildItem -recurse -include *.txt | Select-String -CaseSensitive "SomeString"

Он рекурсивно ищет все текстовые файлы в текущем дереве каталогов для SomeString с чувствительностью к регистру.

Еще лучше, запустите это:

function pgrep { param([string]$search, [string]$inc) Get-ChildItem -recurse -include $inc | Select-String -CaseSensitive $search }

Тогда do:

pgrep SomeStringToSearch *.txt

Затем, чтобы действительно сделать это волшебным, добавьте псевдоним функции в Профиль PowerShell, и вы можете почти унывать боль при отсутствии надлежащих инструментов командной строки.

14

Cygwin включает grep. Все инструменты GNU amd Unix отлично работают в Windows, если вы устанавливаете Cygwin.

http://www.cygwin.com/

13

ack хорошо работает в Windows (если у вас Perl). Я считаю это лучше, чем grep для многих применений.

12

Git в Windows = grep в cmd.exe

Я только что обнаружил, что установка Git даст вам некоторые основные команды Linux: cat, grep, scp и все остальные хорошие.

Установить затем добавить папку Git bin в PATH, а затем ваш cmd.exe имеет базовые функции Linux!

http://code.google.com/p/msysgit/downloads/list?can=3

10

dnGREP - это инструмент grep с открытым исходным кодом для Windows. Он поддерживает ряд интересных функций, включая:

  • Отменить для замены
  • Возможность поиска по щелчку правой кнопкой мыши по папке в проводнике
  • Дополнительные параметры поиска, такие как фонетический поиск и xpath
  • Поиск внутри файлов PDF, архивов и документов Word

IMHO, он имеет приятный и чистый интерфейс:)

  • 1
    Я попробовал довольно много из предложенных инструментов grep и, для меня, dnGrep побеждает.
  • 0
    Это поиск в PDF, но не EPUB
Показать ещё 1 комментарий
7

Я успешно использовал утилиты GNU для Win32 в течение некоторого времени, и у него есть хороший grep, а также хвост и другие полезные утилиты gnu для win32. Я избегаю упакованной оболочки и просто использую исполняемые файлы в командной строке win32.

Хвост, который упакован, также неплохое приложение.

7

Хорошо, рядом с портом Windows GNU grep:

http://gnuwin32.sourceforge.net/

там также Borland grep (очень похожий на GNU one), доступный в бесплатном компиляторе Borland Free С++ (это бесплатное программное обеспечение с инструментами командной строки).

7

Я всегда использую WinGREP, но у меня были проблемы с тем, чтобы не отпускать файлы.

  • 2
    Я использовал wingrep в течение нескольких лет, это здорово, за исключением того, что поля выбора каталога слишком малы
  • 2
    GUI слишком много победит 3.11; (
Показать ещё 5 комментариев
6

Я автор Aba Search and Replace. Как и PowerGREP, он поддерживает регулярные выражения, сохраняет шаблоны для дальнейшего использования, отменяет замену, предварительный просмотр с синтаксисом выделить HTML/CSS/JS/PHP, различные кодировки, включая UTF-8 и UTF-16.

По сравнению с PowerGREP графический интерфейс менее загроможден. Aba мгновенно начинает поиск, когда вы вводите шаблон (инкрементный поиск), чтобы вы могли экспериментировать с регулярными выражениями и сразу же увидите результаты.

Приветствуется попробовать мой инструмент; Я буду рад ответить на любые вопросы.

4

Мне нужен бесплатный инструмент grep для Windows, который позволил вам щелкнуть правой кнопкой мыши по папке и выполнить поиск по регулярному выражению для каждого файла - без экрана nag.

Ниже приведено быстрое решение, основанное на findstr, упомянутом в предыдущем сообщении.

Создайте текстовый файл где-нибудь на жестком диске, где вы держите долгоживущие инструменты. Переименуйте в .bat или .cmd и вставьте в него следующее:

@echo off
set /p term="Search term> "
del %temp%\grepresult.txt
findstr /i /S /R /n /C:"%term%" "%~1\*.*" > "%temp%\grepresult.txt"
start notepad "%temp%\grepresult.txt"

Затем перейдите в папку SendTo. В Windows 7 перейдите к %APPDATA%\Microsoft\Windows\SendTo и перетащите ярлык пакетного файла в эту папку SendTo.

Я переименовал ярлык в 1 GREP, чтобы сохранить его в верхней части списка SendTo.

Вещи, которые я хотел бы сделать дальше с этим, - это вывод вывода findstr через то, что будет генерировать html файл, чтобы вы могли щелкнуть по каждой выходной строке, чтобы открыть этот файл. Кроме того, я не думаю, что он работает с ярлыками к папкам. Мне нужно будет проверить параметр и посмотреть, содержит ли он ".lnk".

3

Мой инструмент выбора - это соответственно Windows Grep:

  • приятный простой графический интерфейс
  • поддерживает поиск и замену
  • может показывать строки вокруг найденных строк
  • может выполнять поиск в столбцах в файлах CSV и фиксированной ширины.
  • 0
    К сожалению, прекращено, я использовал его в течение многих лет.
  • 0
    @alimack Да, я сам недавно это заметил. Тем не менее, инструмент все еще работает (по крайней мере, в Windows 7), и его все еще можно скачать с подобных CNET. Жаль, это был довольно хороший инструмент.
Показать ещё 1 комментарий
3

Я использовал Borland grep годами, но нашел шаблон, который не будет соответствовать. Eeeks. Что еще не удалось найти за эти годы? Я написал простую замену текстового поиска, которая рекурсивно, как grep - это FS.EXE на исходной кузнице.

grep терпит неудачу...

C:\DEV>GREP GAAPRNTR \SOURCE\TPALIB\*.PRG
<no results>

windows findstr works...

C:\DEV>FINDSTR GAAPRNTR \SOURCE\TPALIB\*.PRG
\SOURCE\TPALIB\TPGAAUPD.PRG:ffSPOOL(cRPTFILE, MEM->GAAPRNTR, MEM->NETTYPE)
\SOURCE\TPALIB\TPPRINTR.PRG:    AADD(mPRINTER,   TPACONFG->GAAPRNTR)
\SOURCE\TPALIB\TPPRINTR.PRG:               IF TRIM(TPACONFG->GAAPRNTR) <> TRIM(mPRINTER[2])
\SOURCE\TPALIB\TPPRINTR.PRG:                   REPLACE TPACONFG->GAAPRNTR WITH mPRINTER[2]
  • 1
    Это должен быть принятый ответ
3

UnxUtils - тот, который я использую, отлично работает для меня...

2

Другим хорошим выбором является MSYS. Это дает вам множество других утилит GNU, которые позволят вам быть более продуктивными.

2

Если вам нужен простой инструмент Windows Grep, я создал один из них под названием P-Grep, который я сделал доступным для бесплатной загрузки с моего сайта: www.adjutantit.com - домашнее меню, загрузки.

У Windows Grep, похоже, были проблемы с большим количеством файлов, поэтому я написал свои собственные, что кажется более надежным. Вы можете выбрать папку, щелкнуть правой кнопкой мыши и отправить ее в P-Grep. В процессе установки папка sendto распадается.

1

GREP для Windows

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

  • 0
    Есть ли вообще графический интерфейс? Я просто использую его из командной строки, поэтому я так и не понял.
  • 0
    гм, я разместил комментарий на неправильный пост;)
Показать ещё 1 комментарий
1

Я использую AJC Grep ежедневно в течение многих лет. Единственное серьезное ограничение, которое я обнаружил, состоит в том, что пути к файлам ограничены 255 символами, и он останавливается, когда встречается с ним, а не просто выдает предупреждение. Это раздражает, но не происходит очень часто.

Я использую его на 64-разрядной версии Windows 7 Ultimate, поэтому его 64-разрядные учетные данные в порядке.

1

PowerShell select-string похожа, это не те же параметры и семантика, но она по-прежнему мощная.

0

Если ни одна из решений не совсем то, что вы ищете, возможно, вы могли бы написать обертку в FindStr, которая будет делать именно то, что вам нужно?

FindStr в любом случае очень хорош, поэтому нужно просто сбить графический интерфейс (если вы этого захотите) и предоставить несколько дополнительных функций (например, объединить его с Find, чтобы найти количество файлов, содержащих указанную строку [упомянутые выше]).

Это, конечно, предполагает, что у вас есть требование, время и желание сделать это!

0

У меня есть Cygwin, установленный на моей машине, и поместите каталог Cygwin bin в мой путь к окружающей среде, поэтому Cygwin grep работает нормально командной строки, которая решает все мои требования к скрипту для grep на данный момент.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню