Відповіді:
(Я все ще шанувальник PowerGREP , але більше не використовую його.)
Я знаю, ви вже згадали про це, але PowerGREP - приголомшливий .
Деякі з моїх улюблених функцій:
Тепер я розумію, що інші інструменти грепу можуть виконувати все вищесказане. Просто 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 року:
Ще один інструмент греп, який я зараз весь час використовую в Windows, це AstroGrep :
Його здатність показувати мені більше, ніж просто пошук рядка (тобто --context = NUM grep командного рядка) неоціненна.
І це швидко. Дуже швидко, навіть на старому комп’ютері з не- SSD- накопичувачем (я знаю, вони раніше робили цей жорсткий диск зі спінінг- дисками, звані платинами , божевільно?)
Це безкоштовно.
Це портативний (простий ZIP-архів для розпакування).
Оригінальна відповідь жовтня 2008 року
З Гну Грепом все в порядку
Завантажити його можна, наприклад, тут: ( сайт ftp )
Усі звичні варіанти є тут.
Це в поєднанні з gawk та xargs (включає в себе "знайти" від GnuWin32 ), і ви можете дійсно сценарій, як ви були на Unix!
Дивіться також параметри, які я використовую, щоб рекурсивно знімати зображення :
grep --include "*.xxx" -nRHI "my Text to grep" *
Командлет 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
ls . *.txt -r| sls -ca "SomeString"
sls
для Select-String
дійсно занадто довго?
Можливо, це точно не належить до категорії "grep", але я не зміг би обійтись у Windows без утиліти під назвою AgentRansack . Це утиліта "знайти у файлах" на основі gui з підтримкою регулярного вираження. Клацнути папку правою кнопкою миші просто, натиснути "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 }
Потім зробіть:
pgrep SomeStringToSearch *.txt
Потім, щоб дійсно зробити це магічним, додайте псевдонім функції до вашого профілю PowerShell, і ви майже зможете притупити біль за відсутність належних інструментів командного рядка.
Cygwin включає греп. Усі інструменти GNU та amd Unix чудово працюють у Windows, якщо встановити Cygwin.
Git у Windows = grep in cmd.exe
Щойно я дізнався, що встановлення Git дасть вам основні команди Linux: cat, grep, scp та всі інші хороші.
Потім встановіть, додайте папку Git bin у свій PATH, і тоді ваш cmd.exe має основну функціональність Linux!
dnGREP - це інструмент grep з відкритим кодом для Windows. Він підтримує ряд цікавих функцій, зокрема:
ІМХО, він також має приємний і чистий інтерфейс :)
Я завжди використовую WinGREP , але у мене виникли проблеми з тим, щоб не відпускати файли.
Ну а поруч з портом Windows GNU греп на:
http://gnuwin32.sourceforge.net/
Є також грінка Borland (дуже схожа на одну з GNU), доступна у безкоштовній компіляторі Free C ++ Borland (це безкоштовна програма з інструментами командного рядка).
Я успішно використовую утиліти GNU для Win32 протягом досить тривалого часу, і він має хороший греп, а також хвіст та інші зручні утиліти gnu для win32. Я уникаю упакованої оболонки і просто використовую виконувані файли прямо в командному рядку win32.
Хвост, який упакований, також є непоганим невеликим додатком.
Я автор пошуку і заміни Аба. Як і PowerGREP, він підтримує регулярні вирази, зберігаючи зразки для подальшого використання, скасовує заміни, попередній перегляд із виділенням синтаксису для HTML / CSS / JS / PHP, різних кодувань, включаючи UTF-8 та UTF-16.
У порівнянні з PowerGREP, графічний інтерфейс менш захаращений. Аба миттєво починає пошук під час введення шаблону (поступовий пошук), тож ви зможете експериментувати з регулярними виразами і відразу побачити результати.
Вас вітає спробувати мій інструмент; Я з радістю відповім на будь-які запитання.
Я хотів отримати безкоштовний інструмент 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".
Я використовував гребування Борланда роками, але просто знайшов схему, яка не відповідає. Еекс. Що ще не знайшлося за ці роки? Я написав просту заміну тексту пошуку, яка робить рекурсію на зразок 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]
Моїм інструментом вибору є відповідне ім’я Windows Grep :
Вибір-рядок PowerShell схожий, це не ті самі параметри та семантика, але він все ще потужний.
Якщо ви хочете простий у використанні інструмент Windows Grep, я створив той, який називається P-Grep, який я зробив доступним для вільного завантаження з мого веб-сайту: www.adjutantit.com - домашнє меню, завантаження.
У Windows Grep, здавалося, виникли проблеми з великою кількістю файлів, тому я написав власний - який здається більш надійним. Ви можете вибрати папку, клацнути правою кнопкою миші та надіслати її до P-Grep. Під час встановлення папка sendto не буде оновлена.
Я використовував AJC Grep щодня протягом багатьох років. Єдине головне обмеження, яке я знайшов - це те, що шляхи до файлів обмежені 255 символами, і він зупиняється, коли стикається з ним, а не просто видає попередження. Це дратує, але трапляється не дуже часто.
Я використовую його на 64-розрядному Windows 7 Ultimate, тому його 64-бітні облікові дані чудово.
Я використовую його назавжди, і на щастя, він все ще доступний. Це дуже швидко і дуже мало.
Якщо жодне з рішень не є саме тим, що ви шукаєте, можливо, ви можете написати обгортку FindStr, яка робить саме те, що вам потрібно?
FindStr все одно досить хороший, тому він повинен просто збити графічний інтерфейс (якщо ви цього хочете) і надати кілька додаткових функцій (наприклад, поєднувати його з Find, щоб знайти кількість файлів, що містять вказаний рядок [згаданий вище]).
Це, звичайно, передбачає, що у вас є вимога, час та схильність до цього!
У мене на моїй машині встановлений Cygwin і вводить каталог Cygwin у мій екологічний шлях, так що grep Cygwin працює як звичайний в командному рядку, який вирішує всі мої потреби в скрипті для grep на даний момент.