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

289

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

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

Портман
источник

Ответы:

204

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


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

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

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

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

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

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


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

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

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

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

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

Mark Biek
источник
4
Я хотел бы найти grep gui с открытым исходным кодом, такой же простой в использовании и полнофункциональный, как PowerGREP, но я еще не нашел его :). У меня действительно установлен Cygwin, и я тоже использую grep.
Марк Бик
21
@Wells - старый добрый * nix grep в Windows бесплатный через Cygwin или GnuWin32. FindStr и Find также поставляются с Windows. Grep с отличным графическим интерфейсом, возможностью замены и интегрированной отменой, а также многими другими функциями ... да ... это стоит вам немного больше.
Майк Кларк
11
@Wells, @Mike Clark, @Mark Biek: Я полагаю, что когда этот ответ был опубликован, не было хороших бесплатных инструментов grep для графического интерфейса для Windows, но это уже не так. grepWin имеет все функции, перечисленные в этом ответе, и теперь могут быть и другие конкуренты.
Джон Y
9
@Wells, ненавидеть Windows, потому что инструмент Grep стоит 159 долларов, это все равно, что ненавидеть автомобили, потому что коврики стоят дорого.
md1337
9
@ Хорошо и upvoters: что говядина? Несколько других инструментов GREP для Windows так же бесплатны, как и для Unix / Linux. Действительно, это то, что мне нравится в экосистеме Windows - много бесплатного, если это ваш главный критерий, и экосистема часто поддерживает платных разработчиков за изучение расширенного количества функциональных возможностей, таких как PowerGREP. PowerGREP не может быть чашей чая для всех (иногда его пользовательский интерфейс является подавляющим), но его сложность действительно полезна.
gwideman
322

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 *

Ray Hayes
источник
2
В FINDSTR отсутствует опция отображения только количества строк, содержащих строку. (например, grep -c) Если вам это нужно, вы можете использовать FIND / C.
Ра.
2
Если вы хотите вернуть питание FINDSTR (и ваш шаблон не является регулярным выражением), вы можете, с небольшим повторением, объединить две команды в цепочку: findstr / s ".ini" * .rlog | find / c ".ini"
Рэй Хейс
10
Findstr не имеет полной поддержки RegEx.
Caltuntas
5
.. оригинальный пост не спрашивал специально для RegEx!
Рэй Хейс
24
ОК, findstr, это не grep, как отмечали некоторые другие комментаторы. Но я даже не знал, что он существует, поэтому +1 вам, сэр, за публикацию!
T.Rob
107

GrepWin Бесплатный и открытый исходный код (GPL)

введите описание изображения здесьЯ использовал grepWin, который был написан одним из ребят из tortoisesvn. Работает ли на Windows ...

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

Шеннон
источник
2
И это бесплатно, и оно способно искать в скрытых каталогах / файлах, которые PowerGrep не может делать должным образом ...
Jérôme Verstrynge
3
Кажется, не имеет интерфейса командной строки.
Андреас Хефербург
2
Это хорошо, но дает только одну строку контекста, и вы не сможете увидеть этот контекст, пока не закончите весь поиск.
Мэтью Локк
2
Похоже, хороший и простой инструмент. Но мне нужны были результаты в файле, и это не дает мне возможности экспортировать. Только по этой причине я пошел с AstroGrep.
Росс
не ищет в pdf
JinSnow
53

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

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

АстроГреп офигенность

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

Это бесплатно.
Это портативный (простой ZIP-архив, чтобы распаковать).


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

альтернативный текстГну Греп в порядке

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

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

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

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

grep --include "*.xxx" -nRHI "my Text to grep" *
VonC
источник
Я только начал искать замену Gnu Grep, поскольку версия для Windows, похоже, не в состоянии обрабатывать мои текстовые файлы размером 10 Мб. Он просто сидит там и делает вид, что ничего не нашел. Если я уменьшу размер файла, он начнет работать.
Питер М
Здравствуйте, VonV, ваша ссылка "обычных опций" стала: 404 - Страница не найдена. Пожалуйста, рассмотрите возможность редактирования своего ответа.
Eeerahul
1
@eeerahul ссылка восстановлена, и пример добавлен
VonC
AstroGrep хорош, но, к сожалению, в настоящее время ему не хватает функции «Найти и заменить», которая является для меня
преградой
В нем отсутствует функция «заменить»
XristosK
30

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

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

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

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

gcir * .txt | сс фу

Джей Базузи
источник
3
Пример команды grep -R equivant: Get-ChildItem -recurse -include * .txt | Select-String -CaseSenstive "SomeString"
jslatts
6
Мне очень нравятся многие функции, представленные в PS, но почему каждая команда должна быть длиннее, чем обычная программа на COBOL?
evilcandybag
3
@evilcandybag: Благодаря отличному автозаполнению, в том числе автозаполнению по именам параметров, ввод командной строки PowerShell выполняется быстро и просто, и я могу прочитать результат.
Джей Базузи
1
@jslatts: или вы можете использовать псевдонимы и частичные имена параметров, и это будетls . *.txt -r| sls -ca "SomeString"
Rynant
1
Является ли существующие псевдоним slsдля Select-Stringдействительно слишком долго?
Джои
23

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

jasonmray
источник
К сожалению, он не может открыть внешний текстовый редактор в соответствующей строке.
Павел Фурманьяк
1
Попробуйте платную версию Filelocator Pro, безусловно, лучший инструмент grep, который я когда-либо использовал.
Ян Стенуэй
Filelocator pro делает замены?
алимак
У него очень хороший интерфейс, он делает замены?
алимак
Также теперь он называется Filelocator lite
alimack
19

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

Джон Шиэн
источник
не работает на win7 64 bit; (
Даниэль Магнуссон
Я уверен, что они уже исправили это. Моя главная претензия к BareTail заключается в том, что вы не можете «отфильтровать» журнал, чтобы скрыть (не только цвет) нерелевантные линии.
Эд Браннин
1
Вы можете фильтровать и искать с BareTailPro, но не с бесплатной версией (BareTail).
Глина
Я почти уверен, что они не исправили это, так как он не обновлялся с 2006 года.
alldayremix
4
Он отлично работает на Windows 7 Pro 64bit здесь.
cb88
17

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

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

JJ.
источник
но он не ищет в PDF
JinSnow
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 }

Затем сделайте:

pgrep SomeStringToSearch *.txt

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

jslatts
источник
14

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

http://www.cygwin.com/

Кори Голдберг
источник
14

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

Peter Mortensen
источник
14

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

Daniel Magnusson
источник
это делает это! идеально теперь у меня есть grep в системе без сторонних инструментов.
himanshuxd
10

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

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

ИМХО, у него тоже приятный и чистый интерфейс :)

станковски
источник
1
Я попробовал довольно много из предложенных инструментов grep и, для меня, dnGrep побеждает.
flobadob
Это поиск в PDF, но не
EPUB
Изменить: он может искать EPUB. Вы должны добавить это так: github.com/dnGrep/dnGrep/issues/200
JinSnow
7

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

Том Кидд
источник
2
Я использовал wingrep в течение нескольких лет, это здорово, за исключением того, что поля выбора каталогов слишком малы
Cruachan
Лицензия требует , чтобы платить за него после 30day Eval.
фишка
Он имеет приятную особенность, которой не обладают многие инструменты grep, - возможность инвертировать совпадения. Скажем, удобно для поиска HTML-файлов без чего-либо в них.
Мэтью Локк
Я заметил очень раздражающую особенность WinGrep. Кажется, он сохраняет блокировку файла на всех совпадениях, которые он сделал, и поэтому, если вы попытаетесь удалить один из этих файлов в Проводнике Windows, вы не сможете, пока не закроете WinGrep.
Мэтью Лок
Если бы он мог искать в результатах поиска, сузив список еще дальше, это было бы для меня идеальным инструментом.
Шамиль
7

Ну, кроме порта Windows GNU grep в:

http://gnuwin32.sourceforge.net/

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

Милан Бабушков
источник
7

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

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

user17314
источник
6

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

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

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

Петр Канковский
источник
4

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

Ниже приведено быстрое решение на основе 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

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

Johan
источник
3

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

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]
Джерри Луса
источник
3

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

  • хороший простой графический интерфейс
  • поддерживает поиск и замену
  • может показать линии вокруг найденных линий
  • можно искать в столбцах в файлах CSV и файлах фиксированной ширины
Джон Н
источник
К сожалению, прекращено, я использовал его в течение многих лет.
алимак
@alimack Да, я сам недавно это заметил. Тем не менее, инструмент все еще работает (по крайней мере, в Windows 7), и его все еще можно скачать с подобных CNET. Жаль, это был довольно хороший инструмент.
Джон Н
Ищете замену, PowerGREP перспективный, но уродливый интерфейс и v дорогой. Пробовал grepWin, слишком голые кости, Filelocator, кажется, не делает замену текста. Предложения приветствуются - особенно, как увидеть результаты, прежде чем я обязуюсь заменить.
алимак
2

Строка select в PowerShell похожа, она отличается от опций и семантики, но все же мощна.

Джим девиль
источник
2

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

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

Джон Пембер
источник
2

Еще один хороший выбор - MSYS . Он дает вам кучу других утилит GNU, чтобы вы могли работать более продуктивно.

DDay
источник
1

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

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

CrispinH
источник
1

GREP для Windows

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

bbrown
источник
Есть ли вообще графический интерфейс? Я просто использую его из командной строки, поэтому я так и не понял.
родился
Я искал простой способ показать линии до и после матча, и этот сделал это. Например: запустите 'netstat -anb | grep -B1 22 ', чтобы узнать, какие программы слушают порт 22.
Ян Эрхардт
0

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

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

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

Стефан
источник
0

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

Peter Mortensen
источник