Любые рекомендации по grep средствам для Windows? Идеально те, которые могут использовать 64-битную ОС.
Я знаю Cygwin, и также нашел PowerGREP, но мне интересно, есть ли там скрытые камни?
Любые рекомендации по grep средствам для Windows? Идеально те, которые могут использовать 64-битную ОС.
Я знаю Cygwin, и также нашел PowerGREP, но мне интересно, есть ли там скрытые камни?
(Я все еще поклонник PowerGREP, но я больше не использую его.)
Я знаю, что вы уже упомянули об этом, но PowerGREP awesome.
Некоторые из моих любимых функций:
Теперь я понимаю, что другие инструменты grep могут делать все вышеперечисленное. Просто PowerGREP объединяет все функциональные возможности в очень простой в использовании графический интерфейс.
От тех же замечательных людей, которые принесли вам RegexBuddy и у кого нет привязанности к вам, не любите их. (Следует отметить, что RegexBuddy включает в себя базовую версию grep (для Windows), и она стоит намного меньше, чем PowerGREP.)
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, который был написан одним из парней из черепах. Работает ли в Windows...
Обновление июль 2013:
Еще один инструмент grep, который я использую все время в Windows, AstroGrep:
Его способность показывать мне больше, чем просто поиск по строке (т.е. --context = NUM командной строки grep) неоценим.
И это быстро. Очень быстро, даже на старом компьютере с не-SSD диск (я знаю, они использовали этот жесткий диск с вращающимися дисками, называемый platters, сумасшедший правильно?)
Это бесплатно. Он переносимый (простой ZIP-архив для распаковки).
Оригинальный ответ Октябрь 2008
Gnu Grep в порядке
Вы можете скачать его, например, здесь: (сайт ftp)
Здесь обычные параметры.
Это в сочетании с gawk и xargs (включает "find", от GnuWin32), и вы действительно можете script, как вы были в Unix!
См. также параметры, которые я использую для рекурсивного grep:
grep --include "*.xxx" -nRHI "my Text to grep" *
Командлет 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
Он не может точно попадать в категорию "grep", но я не мог попасть в Windows без утилиты под названием AgentRansack, Это gui-based утилита "find in files" с поддержкой regex. Он мертв просто щелкнуть правой кнопкой мыши по папке, нажать "ransack.." и найти файлы, содержащие то, что вы ищете. Чрезвычайно быстрый тоже.
Прошло пару лет с тех пор, как вы задали вопрос, но я бы рекомендовал AstroGrep (http://astrogrep.sourceforge.net).
Он бесплатный, с открытым исходным кодом и имеет простой интерфейс. Я использую его для поиска кода все время.
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, и вы можете почти унывать боль при отсутствии надлежащих инструментов командной строки.
Cygwin включает grep. Все инструменты GNU amd Unix отлично работают в Windows, если вы устанавливаете Cygwin.
ack хорошо работает в Windows (если у вас Perl). Я считаю это лучше, чем grep для многих применений.
Git в Windows = grep в cmd.exe
Я только что обнаружил, что установка Git даст вам некоторые основные команды Linux: cat, grep, scp и все остальные хорошие.
Установить затем добавить папку Git bin в PATH, а затем ваш cmd.exe имеет базовые функции Linux!
dnGREP - это инструмент grep с открытым исходным кодом для Windows. Он поддерживает ряд интересных функций, включая:
IMHO, он имеет приятный и чистый интерфейс:)
Я всегда использую WinGREP, но у меня были проблемы с тем, чтобы не отпускать файлы.
Хорошо, рядом с портом Windows GNU grep:
http://gnuwin32.sourceforge.net/
там также Borland grep (очень похожий на GNU one), доступный в бесплатном компиляторе Borland Free С++ (это бесплатное программное обеспечение с инструментами командной строки).
Я успешно использовал утилиты GNU для Win32 в течение некоторого времени, и у него есть хороший grep, а также хвост и другие полезные утилиты gnu для win32. Я избегаю упакованной оболочки и просто использую исполняемые файлы в командной строке win32.
Хвост, который упакован, также неплохое приложение.
Я автор Aba Search and Replace. Как и PowerGREP, он поддерживает регулярные выражения, сохраняет шаблоны для дальнейшего использования, отменяет замену, предварительный просмотр с синтаксисом выделить HTML/CSS/JS/PHP, различные кодировки, включая UTF-8 и UTF-16.
По сравнению с PowerGREP графический интерфейс менее загроможден. Aba мгновенно начинает поиск, когда вы вводите шаблон (инкрементный поиск), чтобы вы могли экспериментировать с регулярными выражениями и сразу же увидите результаты.
Приветствуется попробовать мой инструмент; Я буду рад ответить на любые вопросы.
Мне нужен бесплатный инструмент 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".
UnxUtils - тот, который я использую, отлично работает для меня...
Я использовал 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]
Мой инструмент выбора - это соответственно Windows Grep:
Если вам нужен простой инструмент Windows Grep, я создал один из них под названием P-Grep, который я сделал доступным для бесплатной загрузки с моего сайта: www.adjutantit.com - домашнее меню, загрузки.
У Windows Grep, похоже, были проблемы с большим количеством файлов, поэтому я написал свои собственные, что кажется более надежным. Вы можете выбрать папку, щелкнуть правой кнопкой мыши и отправить ее в P-Grep. В процессе установки папка sendto распадается.
Другим хорошим выбором является MSYS. Это дает вам множество других утилит GNU, которые позволят вам быть более продуктивными.
PowerShell select-string похожа, это не те же параметры и семантика, но она по-прежнему мощная.
Я использую AJC Grep ежедневно в течение многих лет. Единственное серьезное ограничение, которое я обнаружил, состоит в том, что пути к файлам ограничены 255 символами, и он останавливается, когда встречается с ним, а не просто выдает предупреждение. Это раздражает, но не происходит очень часто.
Я использую его на 64-разрядной версии Windows 7 Ultimate, поэтому его 64-разрядные учетные данные в порядке.
Я использую его навсегда и, к счастью, он по-прежнему доступен. Он очень быстрый и очень маленький.
У меня есть Cygwin, установленный на моей машине, и поместите каталог Cygwin bin в мой путь к окружающей среде, поэтому Cygwin grep работает нормально командной строки, которая решает все мои требования к скрипту для grep на данный момент.
Если ни одна из решений не совсем то, что вы ищете, возможно, вы могли бы написать обертку в FindStr, которая будет делать именно то, что вам нужно?
FindStr в любом случае очень хорош, поэтому нужно просто сбить графический интерфейс (если вы этого захотите) и предоставить несколько дополнительных функций (например, объединить его с Find, чтобы найти количество файлов, содержащих указанную строку [упомянутые выше]).
Это, конечно, предполагает, что у вас есть требование, время и желание сделать это!