Odpowiedzi:
(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:
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.)
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 *
GrepWin Darmowy i open source (GPL)
Używam grepWin, który został napisany przez jednego z facetów z żółwi. Czy praca w systemie Windows ...
Aktualizacja z lipca 2013 r .:
Kolejnym narzędziem grep, którego teraz używam cały czas w systemie Windows, jest 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
Gnu 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" *
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 gcir
dla Get-ChildItem -Recurse .
smartów do poprawnego przekazywania parametrów i aliasu ss
dla Select-String
. Więc piszesz:
gcir * .txt | ss foo
ls . *.txt -r| sls -ca "SomeString"
sls
jest Select-String
naprawdę zbyt długi?
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ż.
Baregrep ( Baretail też jest dobry)
Minęło kilka lat, odkąd zadałeś pytanie, ale polecam AstroGrep ( http://astrogrep.sourceforge.net ).
Jest darmowy, open source i ma prosty interfejs. Cały czas używam go do wyszukiwania kodu.
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 SomeString
z 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ń.
Cygwin obejmuje grep. Wszystkie narzędzia GNU i rzeczy uniksowe działają świetnie w systemie Windows, jeśli zainstalujesz Cygwin.
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!
dnGREP to narzędzie grep typu open source dla systemu Windows. Obsługuje wiele fajnych funkcji, w tym:
IMHO, ma też ładny i czysty interfejs :)
Cóż, obok portu Windows GNU grep pod:
http://gnuwin32.sourceforge.net/
istnieje także grep Borlanda (bardzo podobny do GNU) dostępny w darmowym kompilatorze Borland Free C ++ (jest to darmowy program z narzędziami wiersza poleceń).
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.
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.
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 findstr
wspomnianym 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\SendTo
i przeciągnij skrót pliku wsadowego do tego folderu SendTo.
Zmieniłem nazwę skrótu, aby 1 GREP
zachować go na górze listy SendTo.
To, co chciałbym teraz z tym zrobić, to findstr
przesł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”.
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]
Moim narzędziem z wyboru jest odpowiednio nazwany Windows Grep :
Ciąg selekcyjny PowerShell jest podobny, to nie są te same opcje i semantyka, ale wciąż jest potężny.
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.
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.
Używam go od zawsze i na szczęście nadal jest dostępny. Jest super szybki i bardzo mały.
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ść!
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.