Что такое хорошие инструменты grep для Windows? [закрытый]

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

Я в курсе Cygwin, конечно, и нашел PowerGREP, но мне интересно, есть ли там скрытые драгоценные камни?

28 ответов


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


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

Я знаю, что вы уже упоминали об этом, но PowerGREP-это высокий.

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

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

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

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


дополнительного решения

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

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

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

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


команда 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 *


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

enter image description hereя использовал grepWin, который был написан одним из парней tortoisesvn. Делает работу в Windows...

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


Обновление Июль 2013 Года:

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

AstroGrep awesomeness

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

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


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

alt textВ GNU Grep В в порядке

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

все обычные варианты здесь.

это в сочетании с gawk и xargs (включает 'find', от GnuWin32), и вы действительно можете писать, как в Unix!

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

grep --include "*.xxx" -nRHI "my Text to grep" *

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

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

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

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

gcir *.txt / ss foo


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


Baregrep (baretail с тоже хорошо)


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

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


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

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 }

затем выполните:

pgrep SomeStringToSearch *.txt

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


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

http://www.cygwin.com/


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


Git в Windows = grep в cmd.exe

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

установите, затем добавьте папку git bin в свой путь, а затем cmd.exe имеет базовую функциональность Linux!

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


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

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

IMHO, у него тоже хороший и чистый интерфейс:)


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


ну, рядом с портом Windows GNU grep at:

http://gnuwin32.sourceforge.net/

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


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

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


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

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

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


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

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

создайте текстовый файл где-нибудь на жестком диске, где вы храните долгоживущие инструменты. Переименовать в .летучая мышь или. 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".


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


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

сбой grep...

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

windows findstr работает...

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]

мой инструмент выбора называется Windows Grep:

  • хороший простой графический интерфейс
  • поддержка поиска и замены
  • можно показать линии вокруг найденных линий
  • может искать в Столбцах в CSVs и файлах фиксированной ширины

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

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


еще один хороший выбор префикса msys. Это дает вам кучу других утилит GNU, чтобы вы могли быть более продуктивными.


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


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

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


GREP для Windows

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


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

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

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


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