Jakie są dobre narzędzia grep dla systemu Windows? [Zamknięte]


289

Wszelkie zalecenia dotyczące narzędzi grep dla systemu Windows? Najlepiej te, które mogłyby wykorzystać 64-bitowy system operacyjny.

Oczywiście znam Cygwina i znalazłem PowerGREP , ale zastanawiam się, czy są tam jakieś ukryte klejnoty?

Odpowiedzi:


204

W oparciu o rekomendacje w komentarzach zacząłem używać grepWin i jest fantastyczny i bezpłatny .


(Nadal jestem fanem PowerGREP , ale już go nie używam.)

Wiem, że już o tym wspomniałeś, ale PowerGREP jest niesamowity .

Niektóre z moich ulubionych funkcji to:

  • Kliknij folder prawym przyciskiem myszy, aby uruchomić na nim PowerGREP
  • Używaj wyrażeń regularnych lub dosłownego tekstu
  • Określ symbole wieloznaczne dla plików do uwzględnienia i wykluczenia
  • Wyszukaj i zamień
  • Tryb podglądu jest fajny, ponieważ możesz upewnić się, że zamieniasz to, co zamierzasz.

Teraz zdaję sobie sprawę, że inne narzędzia grep mogą wykonać wszystkie powyższe czynności. Po prostu PowerGREP pakuje całą funkcjonalność w bardzo łatwy w obsłudze GUI.

Od tych samych wspaniałych ludzi, którzy przynieśli Ci RegexBuddy i z którymi nie mam żadnego związku, poza kochaniem ich rzeczy. (Należy zauważyć, że RegexBuddy zawiera podstawową wersję samego grep (dla Windows) i kosztuje znacznie mniej niż PowerGREP.)


Dodatkowe rozwiązania

Istniejące polecenia systemu Windows

Implementacje poleceń systemu Linux w systemie Windows

Narzędzia Grep z interfejsem graficznym

Dodatkowe narzędzia Grep


4
Chciałbym znaleźć GUI open source open source tak łatwe w obsłudze i w pełni funkcjonalne jak PowerGREP, ale jeszcze go nie znalazłem :). Mam już zainstalowany Cygwin i dość często używam grep.
Mark Biek

21
@Wells - zwykły stary * nix grep w systemie Windows jest bezpłatny przez Cygwin lub GnuWin32. FindStr i Find są również dostarczane z systemem Windows. Grep z doskonałym GUI, możliwością wymiany i zintegrowanym cofaniem, a także wieloma innymi funkcjami ... tak ... to kosztuje trochę więcej.
Mike Clark,

11
@Wells, @Mike Clark, @Mark Biek: Przypuszczam, że możliwe, że nie było fajnych darmowych narzędzi grep GUI dla systemu Windows, kiedy ta odpowiedź została opublikowana, ale to już nie prawda. grepWin ma wszystkie funkcje wymienione w tej odpowiedzi, a teraz mogą być też inni konkurenci.
John Y,

9
@ Well, nienawidząc Windowsa, ponieważ narzędzie Grepa kosztuje 159 USD, jest jak nienawiść do samochodów, ponieważ dywaniki są drogie.
md1337,

9
@ Wells i upvoters: co to za wołowina? Kilka innych narzędzi GREP dla Windows jest tak samo darmowych jak dla unix / linux. Rzeczywiście, to właśnie kocham w ekosystemie Windows - dużo darmowych, jeśli jest to twoje główne kryterium, ORAZ ekosystem często obsługuje płacących programistom za eksplorację większej liczby funkcji, takich jak PowerGREP. PowerGREP może nie być filiżanką herbaty dla wszystkich (czasami jego interfejs użytkownika jest przytłaczający), ale jego dopracowanie ma użyteczność.
gwideman

322

FINDSTR jest dość potężny, obsługuje wyrażenia regularne i ma tę zaletę, że jest już na wszystkich komputerach z systemem 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

Przykładowe użycie: findstr text_to_find *lub do wyszukiwania rekurencyjnegofindstr /s text_to_find *


2
Brakuje w FINDSTR opcji wyświetlania tylko liczby wierszy zawierających ciąg. (jak grep -c) Jeśli potrzebujesz, możesz użyć ZNAJDŹ / C.
Ra.

2
Jeśli chcesz odzyskać moc FINDSTR (a twój wzorzec nie jest wyrażeniem regularnym), zawsze możesz, przy niewielkim powtórzeniu, połączyć dwa polecenia razem: findstr / s ".ini" * .rlog | find / c ".ini"
Ray Hayes

10
Findstr nie ma pełnej obsługi RegEx.
caltuntas

5
.. oryginalny post nie pytał specjalnie o RegEx!
Ray Hayes

24
OK findstr nie jest grep, jak zauważyli inni komentatorzy. Ale nawet nie wiedziałem, że istnieje, więc proszę pana +1, dobry panie za opublikowanie go!
T.Rob

107

GrepWin Darmowy i open source (GPL)

wprowadź opis zdjęcia tutajUżywam grepWin, który został napisany przez jednego z facetów z żółwi. Czy praca w systemie Windows ...

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


2
I jest darmowy i może wyszukiwać w ukrytych katalogach / plikach, których PowerGrep nie jest w stanie robić poprawnie ...
Jérôme Verstrynge

3
Wygląda na to, że nie ma interfejsu wiersza poleceń.
Andreas Haferburg

2
Jest dobry, ale daje tylko jedną linię kontekstu i nie widzisz tego kontekstu, dopóki nie zakończy całego wyszukiwania.
Matthew Lock

2
Wygląda na ładne i proste narzędzie. Ale potrzebowałem wyników w pliku i wydaje się, że nie daje mi to opcji eksportu. Tylko z tego powodu poszedłem z AstroGrep.
Ross

nie wyszukuje w pdf
JinSnow,

53

Aktualizacja z lipca 2013 r .:

Kolejnym narzędziem grep, którego teraz używam cały czas w systemie Windows, jest AstroGrep :

Niesamowita AstroGrep

Jego zdolność do pokazania mi czegoś więcej niż tylko przeszukiwania linii (tj. --Context = NUM ​​grep wiersza poleceń) jest nieoceniona.
I to jest szybkie. Bardzo szybko, nawet na starym komputerze z dyskiem innym niż SSD (wiem, robili ten dysk twardy z wirującymi dyskami, zwanymi talerzami , szalone prawda?)

To jest darmowe.
Jest przenośny (proste archiwum zip do rozpakowania).


Oryginalna odpowiedź z października 2008 r

alternatywny tekstGnu Grep ma się dobrze

Możesz go pobrać na przykład tutaj: ( strona ftp )

Wszystkie zwykłe opcje są tutaj.

To, w połączeniu z gawk i xargs (zawiera „find”, od GnuWin32 ), i możesz naprawdę pisać tak, jak na Uniksie!

Zobacz także opcje, których używam do rekurencyjnego grepowania :

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

Właśnie zacząłem szukać zamiennika Gnu Grep, ponieważ wersja systemu Windows nie wydaje się być w stanie obsłużyć moich plików tekstowych 10 Mb. Po prostu tam siedzi i udaje, że niczego nie znalazł. Jeśli zmniejszę rozmiar pliku, zacznie on działać.
Peter M

Witaj VonV, twój link „zwykłych opcji” stał się: 404 - Nie znaleziono strony. Proszę rozważyć edycję swojej odpowiedzi.
eeerahul

1
Przywrócono link @eeerahul, dodano przykład
VonC

AstroGrep jest fajny, ale niestety obecnie brakuje mu funkcji „Znajdź i zamień”, która jest dla mnie przełomowa
Łukasz Wiatrak

Brakuje mu funkcji „zamień”
XristosK,

30

Polecenie cmdlet Select-String programu PowerShell działało dobrze w wersji 1.0, ale jest znacznie lepsze w wersji 2.0 . Zainstalowanie programu PowerShell w najnowszych wersjach systemu Windows oznacza, że ​​Twoje umiejętności będą zawsze przydatne, bez wcześniejszej instalacji.

Nowe parametry dodane do Select-String : Polecenie cmdlet Select-String obsługuje teraz nowe parametry, takie jak:

  • -Kontekst: To pozwala zobaczyć linie przed i po linii dopasowania
  • -AllMatches: pozwala zobaczyć wszystkie dopasowania w linii (wcześniej można było zobaczyć tylko pierwsze dopasowanie w linii)
  • -NotMatch: Odpowiednik grep -vo
  • -Encoding: aby określić kodowanie znaków

Uważam, że celowe jest utworzenie funkcji gcirdla Get-ChildItem -Recurse .smartów do poprawnego przekazywania parametrów i aliasu ssdla Select-String. Więc piszesz:

gcir * .txt | ss foo


3
Przykład grep -R ekwiwalent: Get-ChildItem -recurse -include * .txt | Select-String -CaseSenstive „SomeString”
jslatts

6
Naprawdę podoba mi się wiele funkcji wprowadzonych w PS, ale dlaczego każde polecenie musi być dłuższe niż przeciętny program COBOL?
evilcandybag

3
@evilcandybag: Dzięki doskonałemu autouzupełnianiu, w tym autouzupełnianiu nazw parametrów, wpisywanie wierszy poleceń programu PowerShell jest szybkie i łatwe, a ja mogę odczytać wynik.
Jay Bazuzi

1
@jslatts: lub możesz użyć aliasów i nazw częściowych parametrów, a byłoby tols . *.txt -r| sls -ca "SomeString"
Rynant

1
Czy istniejący alias slsjest Select-Stringnaprawdę zbyt długi?
Joey,

23

Może nie do końca należy do kategorii „grep”, ale nie mogłem się obejść w systemie Windows bez narzędzia o nazwie AgentRansack . To oparte na GUI narzędzie „znajdź w plikach” z obsługą wyrażeń regularnych. Nie można łatwo kliknąć folderu prawym przyciskiem myszy, nacisnąć „plecak ..” i znaleźć pliki zawierające to, czego szukasz. Niezwykle szybki też.


Niestety nie można otworzyć zewnętrznego edytora tekstu w odpowiedniej linii.
Paweł Furmaniak

1
Wypróbuj płatną wersję o nazwie Filelocator Pro, zdecydowanie najlepsze narzędzie grep, jakiego kiedykolwiek używałem.
Ian Stanway

Czy Filelocator pro dokonuje wymiany?
alimack

Ma bardzo ładny interfejs, czy zastępuje?
alimack

Teraz nazywa się teraz Filelocator Lite
alimack

19

Baregrep ( Baretail też jest dobry)


nie działa na Win7 64 bit; (
Daniel Magnusson

Jestem prawie pewien, że już to naprawili. Moją główną skargą na BareTail jest to, że nie można „filtrować” dziennika, aby ukryć (nie tylko kolor) nieistotne linie.
Ed Brannin

1
Możesz filtrować i wyszukiwać za pomocą BareTailPro, ale nie z darmową wersją (BareTail).
Clay

Jestem pewien, że nie naprawili tego do tej pory, ponieważ nie był aktualizowany od 2006 roku.
alldayremix

4
Działa dobrze na Windows 7 Pro 64bit tutaj.
cb88


16

PowerShell został wspomniany kilka razy. Oto, w jaki sposób używałbyś go w grecki sposób:

Get-ChildItem -recurse -include *.txt | Select-String -CaseSensitive "SomeString"

Rekurencyjnie przeszukuje wszystkie pliki tekstowe w bieżącym drzewie katalogów SomeStringz rozróżnianiem wielkości liter.

Jeszcze lepiej, uruchom to:

function pgrep { param([string]$search, [string]$inc) Get-ChildItem -recurse -include $inc | Select-String -CaseSensitive $search }

Następnie wykonaj:

pgrep SomeStringToSearch *.txt

Następnie, aby naprawdę uczynić go magicznym, dodaj alias funkcji do swojego profilu PowerShell, a możesz niemal stłumić ból związany z brakiem odpowiednich narzędzi wiersza poleceń.




14

Git w systemie Windows = grep w cmd.exe

Właśnie się dowiedziałem, że instalacja Gita da ci kilka podstawowych poleceń Linuksa: cat, grep, scp i wszystkie inne dobre.

Zainstaluj, a następnie dodaj folder Git bin do ŚCIEŻKI, a następnie program cmd.exe ma podstawową funkcjonalność Linuksa!

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


to robi to! idealnie teraz mam grep w systemie bez narzędzi innych firm.
himanshuxd

10

dnGREP to narzędzie grep typu open source dla systemu Windows. Obsługuje wiele fajnych funkcji, w tym:

  • Cofnij w celu zamiany
  • Możliwość wyszukiwania, klikając prawym przyciskiem myszy folder w Eksploratorze
  • Zaawansowane opcje wyszukiwania, takie jak wyszukiwanie fonetyczne i xpath
  • Przeszukuj pliki PDF, archiwa i dokumenty Word

IMHO, ma też ładny i czysty interfejs :)


1
Wypróbowałem sporo sugerowanych narzędzi grep i dla mnie wygrywa dnGrep.
flobadob,

Przeszukuje w formacie pdf, ale nie epub
JinSnow,

Edycja: może wyszukiwać epub. Musisz dodać go w ten sposób: github.com/dnGrep/dnGrep/issues/200
JinSnow

7

Zawsze używam WinGREP , ale miałem problemy z tym, że nie puściłem plików.


2
Korzystam z wingrep od kilku lat, to świetnie, z wyjątkiem tego, że pola wyboru katalogu są zdecydowanie za małe
Cruachan

Licencja wymaga za to zapłacić po eval 30day.
chip

Ma fajną funkcję, której nie ma wiele narzędzi grep, możliwość odwracania dopasowań. Powiedzmy, że jest to przydatne do znajdowania plików HTML bez czegoś w sobie.
Matthew Lock

Zauważyłem jednak bardzo irytującą funkcję WinGrep. Wygląda na to, że utrzymuje blokadę plików we wszystkich dopasowaniach, które zostały wykonane, więc jeśli spróbujesz usunąć jeden z tych plików w Eksploratorze Windows, nie będziesz w stanie, dopóki nie zamkniesz WinGrep.
Matthew Lock

Gdyby mógł wyszukiwać w wynikach wyszukiwania, jeszcze bardziej zawężając listę, byłoby to dla mnie idealne narzędzie.
Shamil


7

Z powodzeniem korzystałem z narzędzi GNU dla Win32 od dłuższego czasu i ma dobre grep, a także ogon i inne przydatne narzędzia GNU dla win32. Unikam spakowanej powłoki i po prostu używam plików wykonywalnych bezpośrednio w wierszu polecenia win32.

Zapakowany ogon to również całkiem niezła aplikacja.


6

Jestem autorem Aba Search and Replace. Podobnie jak PowerGREP, obsługuje wyrażenia regularne, zapisuje wzorce do dalszego użycia, cofa zamiany, podgląd z podświetleniem składni dla HTML / CSS / JS / PHP, różne kodowania, w tym UTF-8 i UTF-16.

W porównaniu z PowerGREP GUI jest mniej zagracone. Aba natychmiast rozpoczyna wyszukiwanie podczas pisania wzoru (wyszukiwanie przyrostowe), dzięki czemu możesz eksperymentować z wyrażeniami regularnymi i od razu zobaczyć wyniki.

Zapraszamy do wypróbowania mojego narzędzia; Z przyjemnością odpowiem na wszelkie pytania.


4

Chciałem darmowego narzędzia grep dla systemu Windows, które pozwoli ci kliknąć prawym przyciskiem myszy folder i przeprowadzić wyszukiwanie wyrażeń regularnych każdego pliku - bez żadnego ekranu.

Poniżej znajduje się szybkie rozwiązanie oparte na findstrwspomnianym w poprzednim poście.

Utwórz plik tekstowy gdzieś na dysku twardym, gdzie przechowujesz długowieczne narzędzia. Zmień nazwę na .bat lub .cmd i wklej w nim następujące elementy:

@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"

Następnie przejdź do folderu SendTo. W systemie Windows 7 przejdź %APPDATA%\Microsoft\Windows\SendToi przeciągnij skrót pliku wsadowego do tego folderu SendTo.

Zmieniłem nazwę skrótu, aby 1 GREPzachować go na górze listy SendTo.

To, co chciałbym teraz z tym zrobić, to findstrprzesłać dane wyjściowe przez coś, co wygenerowałoby plik HTML, abyś mógł kliknąć każdą linię wyjściową, aby otworzyć ten plik. Nie sądzę też, aby działało to ze skrótami do folderów. Musiałbym sprawdzić parametr i sprawdzić, czy zawiera on „.lnk”.



3

Używam grepa Borlanda od lat, ale właśnie znalazłem wzór, który nie pasuje. Eeeks. Czego jeszcze nie znaleziono przez lata? Napisałem prostą zamianę wyszukiwania tekstowego, która rekurencyjnie przypomina grep - to FS.EXE na źródłowej kuźni.

grep zawodzi ...

C:\DEV>GREP GAAPRNTR \SOURCE\TPALIB\*.PRG
<no results>

windows findstr działa ...

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

Moim narzędziem z wyboru jest odpowiednio nazwany Windows Grep :

  • ładny prosty GUI
  • obsługuje wyszukiwanie i zamianę
  • może pokazywać linie wokół znalezionych linii
  • może wyszukiwać w kolumnach w plikach CSV i plikach o stałej szerokości

Niestety zaprzestałem, używam go od lat.
alimack

@alimack Tak, ostatnio to zauważyłem. Jednak narzędzie nadal działa (przynajmniej w systemie Windows 7) i nadal można je pobrać z serwisów CNET. Szkoda, to było całkiem miłe narzędzie.
John N

Poszukuję zamiennika, obiecującego, ale brzydkiego interfejsu PowerGREP i v drogiego. Próbowałem grepWin, zbyt gołe kości, Filelocator nie wydaje się zastępować tekstu. Sugestie mile widziane - szczególnie jak zobaczenie wyników, zanim zdecyduję się je zastąpić.
alimack

2

Ciąg selekcyjny PowerShell jest podobny, to nie są te same opcje i semantyka, ale wciąż jest potężny.


2

Jeśli chcesz prostego w użyciu narzędzia Windows Grep, stworzyłem jedno o nazwie P-Grep, które udostępniłem do bezpłatnego pobrania z mojej strony internetowej: www.adjutantit.com - menu główne, pliki do pobrania.

Windows Grep wydawał się mieć problemy z dużą liczbą plików, więc napisałem własny - który wydaje się bardziej niezawodny. Możesz wybrać folder, kliknąć prawym przyciskiem myszy i wysłać go do P-Grep. Folder sendto nie jest aktualizowany podczas instalacji.


2

Kolejnym dobrym wyborem jest MSYS . Daje ci wiele innych narzędzi GNU, które pozwalają ci być bardziej produktywnym.


1

Od lat używam AJC Grep . Jedynym poważnym ograniczeniem, jakie znalazłem, jest to, że ścieżki do plików są ograniczone do 255 znaków i przestają się pojawiać, gdy tylko je napotka, zamiast wydawać ostrzeżenie. To denerwujące, ale nie zdarza się często.

Używam go w 64-bitowym systemie Windows 7 Ultimate, więc jego 64-bitowe poświadczenia są w porządku.


1

GREP dla Windows

Używam go od zawsze i na szczęście nadal jest dostępny. Jest super szybki i bardzo mały.


Czy jest nawet GUI? Po prostu używam go z wiersza poleceń, więc nigdy nie zdawałem sobie sprawy.
brązowy

Szukałem prostego sposobu, aby pokazać linie przed i po meczu, a ten zrobił to. Na przykład: uruchom 'netstat -anb | grep -B1 22 ', aby wiedzieć, które programy nasłuchują na porcie 22.
Jan Ehrhardt

0

Jeśli żadne z rozwiązań nie jest dokładnie tym, czego szukasz, być może możesz napisać opakowanie do FindStr, które robi dokładnie to, czego potrzebujesz?

FindStr i tak jest całkiem dobry, więc powinien po prostu podnieść GUI (jeśli chcesz) i zapewnić kilka dodatkowych funkcji (takich jak połączenie go z Findem, aby znaleźć liczbę plików, które zawierają określony ciąg [wspomniany powyżej]).

To oczywiście zakłada, że ​​masz na to wymaganie, czas i skłonność!


0

Mam Cygwin zainstalowany na moim komputerze i umieściłem katalog bin Cygwin na mojej ścieżce środowiskowej, więc greg Cygwin działa normalnie w wierszu poleceń, który w tej chwili rozwiązuje wszystkie moje potrzeby związane ze skryptami.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.