Что такое хорошие инструменты grep для Windows? [закрытый]
28 ответов
основываясь на рекомендациях в комментариях, я начал использовать grepWin и это фантастика и свободный.
(Я все еще поклонник PowerGREP, но я больше не использовать его.)
Я знаю, что вы уже упоминали об этом, но PowerGREP-это высокий.
некоторые из моих любимых функций:
- щелкните правой кнопкой мыши на папке, чтобы запустить PowerGREP на нем
- использовать регулярные выражения или текста
- указать маски файлов включить и исключить
- поиск и замена
- режим предварительного просмотра хорош, потому что вы можете убедиться, что вы заменяете то, что вы намерены.
теперь я понимаю, что другие инструменты grep могут сделать все вышеперечисленное. Просто PowerGREP упаковывает все функции в очень простой в использовании графический интерфейс.
из той же замечательных людей, которые принесли вам RegexBuddy и у кого у меня нет никакой связи, кроме любви к их вещам. (следует отметить, что RegexBuddy включает в себя базовую версию grep (для Windows), и это стоит намного меньше, чем PowerGREP.)
дополнительного решения
существующие команды Windows
- команда findstr
- Select-String в PowerShell
команды 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)
я использовал grepWin, который был написан одним из парней tortoisesvn. Делает работу в Windows...
Обновление Июль 2013 Года:
другой инструмент grep, который я теперь использую все время в Windows, - это AstroGrep:
его способность показать мне больше, чем просто поиск строки (т. е. --context=NUM командной строки grep) неоценима.
И это быстро. Очень быстро, даже на старом компьютере с non-SSD диск (я знаю, они использовали этот жесткий диск с спиннинг диски, называется тарелки, сумасшедший ли?)
Это бесплатно.
Это портативный (простой zip-архив для распаковки).
оригинальный ответ октябрь 2008
В 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..- и найдите файлы, содержащие то, что вы ищете. И очень быстро.
прошло несколько лет с тех пор, как вы задали вопрос, но я бы рекомендовал 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.
Git в Windows = grep в cmd.exe
Я только что узнал установке Git даст вам некоторые основные команды Linux: cat, grep, scp и все другие хорошие.
установите, затем добавьте папку git bin в свой путь, а затем cmd.exe имеет базовую функциональность Linux!
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".
я использовал 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, чтобы вы могли быть более продуктивными.
Я использую AJC Grep ежедневно в течение года. Единственное существенное ограничение, которое я нашел, - это то, что пути к файлам ограничены 255 символами, и он останавливается, когда он сталкивается с одним, а не просто выдает предупреждение. Это раздражает, но случается не часто.
Я использую его на 64-разрядной Windows 7 Ultimate, поэтому его 64-разрядные учетные данные в порядке.
Если ни одно из решений не совсем то, что вы ищете, возможно, вы могли бы написать обертку для FindStr, которая делает именно то, что вам нужно?
FindStr довольно хорош в любом случае, поэтому он должен просто сбивать GUI (если вы этого хотите) и предоставлять несколько дополнительных функций (например, комбинируя его с Find, чтобы найти количество файлов, которые содержат указанную строку [упомянутую выше]).
Это, конечно, предполагает, что у вас есть потребность, время и желание делать это!
Я Cygwin установлен на моей машине и поместил каталог Cygwin bin в мой путь к среде, поэтому Cygwin grep работает как обычно в командной строке, которая решает все мои потребности сценариев для grep на данный момент.