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


289

Якісь рекомендації щодо інструментів grep для Windows? В ідеалі такі, які могли б використовувати 64-бітну ОС.

Я знаю про Cygwin , звичайно, і також знайшов PowerGREP , але мені цікаво, чи є там якісь приховані дорогоцінні камені?

Відповіді:


204

На основі рекомендацій в коментарях я почав використовувати grepWin, і це фантастично і безкоштовно .


(Я все ще шанувальник PowerGREP , але більше не використовую його.)

Я знаю, ви вже згадали про це, але PowerGREP - приголомшливий .

Деякі з моїх улюблених функцій:

  • Клацніть правою кнопкою миші папку, щоб запустити PowerGREP на ній
  • Використовуйте регулярні вирази або буквальний текст
  • Вкажіть підстановку для файлів, які потрібно включити та виключити
  • Пошук і заміна
  • Режим попереднього перегляду приємний тим, що ви можете переконатися, що замінюєте те, що маєте намір.

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

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


Додаткові рішення

Існуючі команди Windows

Реалізація команд Linux у Windows

Інструменти Grep з графічним інтерфейсом

Додаткові інструменти Grep


4
Я хотів би знайти grep gui з відкритим кодом, як простий у використанні, так і повноцінний, як PowerGREP, але я ще не знайшов його :). У мене встановлений Cygwin і також використовую греп від цього.
Марк Бейк

21
@Wells - звичайний старий * nix grep для Windows безкоштовно через Cygwin або GnuWin32. FindStr і Find також поставляються з Windows. Греп із чудовим графічним інтерфейсом, можливістю заміни та інтегрованим скасуванням, а також безліччю інших функцій ... так ... це коштує вам трохи більше.
Майк Кларк

11
@Wells, @Mike Clark, @Mark Biek: Можливо, можливо, що не було приємних безкоштовних інструментів для грейфування графічного інтерфейсу для Windows, коли ця відповідь була розміщена, але це вже не відповідає дійсності. grepWin має всі функції, перелічені у цій відповіді, і зараз можуть бути й інші конкуренти.
Джон Y

9
@ Ну, ненавидіти Windows, тому що інструмент Grep коштує 159 доларів, це як ненавидіння автомобілів, оскільки килимки для підлоги дорогі.
md1337

9
@Велики та відгуки: Що таке яловичина? Кілька інших інструментів 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 *


2
Що не вистачає FINDSTR, це можливість відображення лише кількості рядків, що містять рядок. (наприклад, grep -c) Якщо вам це потрібно, ви можете використовувати FIND / C.
Ра.

2
Якщо ви хочете повернути живлення FINDSTR (і ваш шаблон не є регулярним виразом), ви завжди можете з невеликим повторенням з'єднати дві команди разом: findstr / s ".ini" * .rlog | find / c ".ini"
Рей Хейс

10
Findstr не має повністю підтримки RegEx.
caltuntas

5
.. оригінальний пост не запитував спеціально для RegEx!
Рей Хейс

24
Добре знайдіть, що це не греп, як зазначали деякі інші коментатори. Але я навіть не знав, що він існує, тому +1 вам, добрий пане, за розміщення його!
T.Rob

107

Безкоштовний та відкритий код GrepWin (GPL)

введіть тут опис зображенняЯ використовував grepWin, який написав один із хлопців-черепах. Робота в Windows ...

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


2
І це безкоштовно, і він може шукати в прихованих каталогах / файлах, які PowerGrep не вміє робити належним чином ...
Jérôme Verstrynge

3
Схоже, не існує інтерфейсу командного рядка.
Андреас Хафербург

2
Це добре, але він дає лише один рядок контексту, і ви не можете побачити цей контекст, поки не буде завершено весь пошук.
Метью Лок

2
Це здається приємним і простим інструментом. Але мені потрібні були результати у файлі, і це, здається, не дає мені можливості експортувати. Тільки з цієї причини я поїхав з AstroGrep.
Росс

не шукає в pdf
JinSnow

53

Оновлення липня 2013 року:

Ще один інструмент греп, який я зараз весь час використовую в Windows, це AstroGrep :

Дивовижність AstroGrep

Його здатність показувати мені більше, ніж просто пошук рядка (тобто --context = NUM ​​grep командного рядка) неоціненна.
І це швидко. Дуже швидко, навіть на старому комп’ютері з не- SSD- накопичувачем (я знаю, вони раніше робили цей жорсткий диск зі спінінг- дисками, звані платинами , божевільно?)

Це безкоштовно.
Це портативний (простий ZIP-архів для розпакування).


Оригінальна відповідь жовтня 2008 року

alt текстЗ Гну Грепом все в порядку

Завантажити його можна, наприклад, тут: ( сайт ftp )

Усі звичні варіанти є тут.

Це в поєднанні з gawk та xargs (включає в себе "знайти" від GnuWin32 ), і ви можете дійсно сценарій, як ви були на Unix!

Дивіться також параметри, які я використовую, щоб рекурсивно знімати зображення :

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

Я тільки почав шукати заміну для Gnu Grep, оскільки версія Windows, здається, не може обробити мої текстові файли 10 Мб. Він просто сидить там і робить вигляд, що нічого не знайшов. Якщо я скорочую розмір файлу, він починає працювати.
Пітер М

Привіт VonV, ваше посилання на "звичайні параметри" стало: 404 - Сторінка не знайдена. Подумайте про редагування своєї відповіді.
eeerahul

1
Посилання @eeerahul відновлено, і приклад доданий
VonC

AstroGrep приємний, але, на жаль, наразі йому не вистачає функції «Знайти та замінити», яка для мене є вимикачем угод
Łukasz Wiatrak

У ньому відсутня функція «замінити»
XristosK

30

Командлет PowerShell Select-String був гарним у версії 1.0, але значно кращий для v2.0 . Вбудований PowerShell до останніх версій Windows означає, що ваші навички тут завжди корисні, не попередньо встановлюючи щось.

До Select-String додано нові параметри : командлет Select-String тепер підтримує нові параметри, такі як:

  • -Контекст: це дозволяє бачити рядки до і після лінії матчу
  • -AllMatches: дозволяє переглядати всі поєдинки в рядку (раніше ви могли бачити лише перший матч у рядку)
  • -NotMatch: еквівалент grep -vo
  • -Encoding: для визначення кодування символів

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

gcir * .txt | ss foo


3
Приклад grep -R equivilant: 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 . Це утиліта "знайти у файлах" на основі gui з підтримкою регулярного вираження. Клацнути папку правою кнопкою миші просто, натиснути "ransack .." і знайти файли, що містять те, що ви шукаєте. Надзвичайно швидко теж.


На жаль, він не може відкрити зовнішній текстовий редактор у відповідному рядку.
Pawel Furmaniak

1
Спробуйте платну версію під назвою Filelocator Pro - на сьогоднішній день найкращим інструментом греп, який я коли-небудь використовував.
Ian Stanway

Чи замінює Filelocator pro?
alimack

У нього дуже приємний інтерфейс, він робить заміни?
alimack

Також його тепер називають Filelocator lite
alimack

19

Барегреп ( Барелей теж хороший)


не працює на програмі win7 64 bit; (
Даніель Магнуссон

Я майже впевнений, що вони це вже виправили. Моя головна скарга на BareTail полягає в тому, що ви не можете "фільтрувати" журнал, щоб сховати (не лише кольорові) нерелевантні лінії.
Ед Браннін

1
Ви можете фільтрувати та шукати за допомогою BareTailPro, тільки не за допомогою безкоштовної версії (BareTail).
Глина

Я впевнений, що вони цього не зробили , оскільки він не оновлювався з 2006 року.
alldayremix

4
Тут відмінно працює на Windows 7 Pro 64bit.
cb88

17

Минуло пару років, як ви задали це питання, але я б рекомендував AstroGrep ( http://astrogrep.sourceforge.net ).

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


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




14

Git у Windows = grep in cmd.exe

Щойно я дізнався, що встановлення Git дасть вам основні команди Linux: cat, grep, scp та всі інші хороші.

Потім встановіть, додайте папку Git bin у свій PATH, і тоді ваш cmd.exe має основну функціональність Linux!

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


що це робить! Ідеально зараз я маю греп в системі без сторонніх інструментів.
himanshuxd

10

dnGREP - це інструмент grep з відкритим кодом для Windows. Він підтримує ряд цікавих функцій, зокрема:

  • Скасувати заміну
  • Можливість пошуку клацанням правою кнопкою миші на папці в Explorer
  • Параметри попереднього пошуку, такі як фонетичний пошук та xpath
  • Шукайте всередині файлів, архівів та документів у форматі PDF

ІМХО, він також має приємний і чистий інтерфейс :)


1
Я спробував досить багато запропонованих інструментів grep і, для мене, dnGrep виграє.
flobadob


Редагувати: він може шукати epub. Ви повинні додати його так: github.com/dnGrep/dnGrep/isissue/200
JinSnow

7

Я завжди використовую WinGREP , але у мене виникли проблеми з тим, щоб не відпускати файли.


2
Я декілька років використовував крила, це чудово, за винятком того, що поля для вибору каталогів занадто малі
Cruachan

Ліцензія вимагає , щоб платити за нього після 30day Eval.
фішка

У ній є приємна особливість того, що багато інструментів грепування немає, можливість перевертати сірники. Скажімо, зручно для пошуку HTML-файлів без чогось у них.
Метью Лок

Я помітив дуже дратівливу особливість WinGrep, хоча. Схоже, зберігається блокування файлу на всіх створених відповідностях, тому, якщо ви спробуєте і видалите один із цих файлів у Провіднику Windows, ви не зможете, поки не закриєте WinGrep.
Меттью Лок

Якщо він міг би шукати в результатах пошуку, звуження списку ще більше, це було б ідеальним інструментом для мене.
Шаміль

7

Ну а поруч з портом Windows GNU греп на:

http://gnuwin32.sourceforge.net/

Є також грінка Borland (дуже схожа на одну з GNU), доступна у безкоштовній компіляторі Free C ++ Borland (це безкоштовна програма з інструментами командного рядка).


7

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

Хвост, який упакований, також є непоганим невеликим додатком.


6

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

У порівнянні з PowerGREP, графічний інтерфейс менш захаращений. Аба миттєво починає пошук під час введення шаблону (поступовий пошук), тож ви зможете експериментувати з регулярними виразами і відразу побачити результати.

Вас вітає спробувати мій інструмент; Я з радістю відповім на будь-які запитання.


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

Я використовував гребування Борланда роками, але просто знайшов схему, яка не відповідає. Еекс. Що ще не знайшлося за ці роки? Я написав просту заміну тексту пошуку, яка робить рекурсію на зразок grep - це FS.EXE на source forge.

греп не вдається ...

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

@alimack Так, це я нещодавно помітив сам. Однак інструмент все ще працює (як мінімум на Windows 7), і його ще можна завантажити з подібних даних CNET. Соромно, це був досить приємний інструмент.
Джон N

Шукаєте заміну, перспективний, але потворний інтерфейс PowerGREP та v дорогий. Випробуваний grepWin, занадто голі кістки, Filelocator не здається заміною тексту. Пропозиції вітаються - особливо, як бачити результати, перш ніж я зобов’язуюся замінити.
alimack

2

Вибір-рядок PowerShell схожий, це не ті самі параметри та семантика, але він все ще потужний.


2

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

У Windows Grep, здавалося, виникли проблеми з великою кількістю файлів, тому я написав власний - який здається більш надійним. Ви можете вибрати папку, клацнути правою кнопкою миші та надіслати її до P-Grep. Під час встановлення папка sendto не буде оновлена.


2

Ще один хороший вибір - MSYS . Це дає вам купу інших утиліт GNU, щоб ви могли бути більш продуктивними.


1

Я використовував AJC Grep щодня протягом багатьох років. Єдине головне обмеження, яке я знайшов - це те, що шляхи до файлів обмежені 255 символами, і він зупиняється, коли стикається з ним, а не просто видає попередження. Це дратує, але трапляється не дуже часто.

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


1

GREP для Windows

Я використовую його назавжди, і на щастя, він все ще доступний. Це дуже швидко і дуже мало.


Чи є навіть графічний інтерфейс? Я просто використовую його з командного рядка, щоб я ніколи не зрозумів.
вирвався

Я шукав простий спосіб показати лінії до і після матчу, і цей це зробив. Наприклад: запустіть 'netstat -anb | grep -B1 22 ', щоб знати, які програми слухати порт 22.
Ян Ерхардт

0

Якщо жодне з рішень не є саме тим, що ви шукаєте, можливо, ви можете написати обгортку FindStr, яка робить саме те, що вам потрібно?

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

Це, звичайно, передбачає, що у вас є вимога, час та схильність до цього!


0

У мене на моїй машині встановлений Cygwin і вводить каталог Cygwin у мій екологічний шлях, так що grep Cygwin працює як звичайний в командному рядку, який вирішує всі мої потреби в скрипті для grep на даний момент.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.