it-swarm.it

Quali sono i buoni strumenti di grep per Windows?

Qualche raccomandazione su grep strumenti per Windows? Idealmente quelli che potrebbero sfruttare il sistema operativo a 64 bit.

Sono a conoscenza di Cygwin , ovviamente, e ho anche trovato PowerGREP , ma mi chiedo se ci siano gemme nascoste là fuori?

290
Portman

Sulla base dei consigli nei commenti, ho iniziato a utilizzare grepWin ed è fantastico e gratuito .


(Sono ancora un fan di PowerGREP , ma non lo uso più.)

So che l'hai già menzionato, ma PowerGREP è fantastico .

Alcune delle mie funzionalità preferite sono:

  • Fare clic con il tasto destro del mouse su una cartella per eseguire PowerGREP su di essa
  • Usa espressioni regolari o testo letterale
  • Specifica i caratteri jolly per i file da includere ed escludere
  • Cerca e sostituisci
  • La modalità di anteprima è piacevole perché puoi essere certo di sostituire quello che intendi.

Ora mi rendo conto che gli altri strumenti di grep possono fare tutto quanto sopra. È solo che PowerGREP offre tutte le funzionalità in una GUI molto facile da usare.

Dagli stessi meravigliosi ragazzi che ti hanno portato RegexBuddy e con chi non ho affiliazione con oltre amare le loro cose . (Va notato che RegexBuddy include una versione base di grep (per Windows) e costa molto meno di PowerGREP.)


Soluzioni aggiuntive

Comandi Windows esistenti

Implementazioni dei comandi di Linux su Windows

Strumenti di grep con un'interfaccia grafica

Ulteriori strumenti di Grep

188
Mark Biek

FINDSTR è abbastanza potente, supporta le espressioni regolari e presenta i vantaggi di essere già su tutte le macchine 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

Esempio di utilizzo: findstr text_to_find * o per cercare in modo ricorsivo findstr /s text_to_find *

315
Ray Hayes

GrepWin Gratuito e open source (GPL)

enter image description hereSto usando grepWin che è stato scritto da uno dei tortoisesvn ragazzi. Il lavoro su Windows ...

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

104
Stan Sarama

Aggiornamento luglio 2013:

Un altro strumento di grep che ora utilizzo sempre su Windows è AstroGrep :

AstroGrep awesomeness

La sua capacità di mostrarmi qualcosa di più della semplice ricerca di linea (cioè il --context = NUM ​​di una grep da riga di comando) è inestimabile.
Ed è veloce. Molto veloce, anche su un vecchio computer con unità non - SSD (lo so, facevano questo disco fisso con spinning disks, chiamati platters , pazzo vero?)

È gratis.
È portatile (semplice archivio Zip per decomprimere).


Risposta originale ottobre 2008

alt textGnu Grep va bene

Puoi scaricarlo ad esempio qui: ( site ftp )

Tutte le opzioni usuali sono qui.

Quello, combinato con gawk e xargs (include "trova", da GnuWin32 ), e puoi davvero scrivere come se fossi su Unix!

Vedi anche le opzioni che sto usando per grep ricorsivamente :

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

Il cmdlet Select-String di PowerShell andava bene nella versione 1.0, ma è significativamente migliore per la v2.0 . Avere PowerShell integrato nelle recenti versioni di Windows significa che le tue abilità saranno sempre utili, senza prima installare qualcosa.

Nuovi parametri aggiunti a Select-String : il cmdlet Select-String ora supporta nuovi parametri, come ad esempio:

  • -Context: questo ti permette di vedere le linee prima e dopo la linea di corrispondenza
  • -AllMatches: che ti consente di vedere tutte le corrispondenze in una riga (in precedenza, puoi vedere solo la prima corrispondenza in una riga)
  • -NotMatch: Equivalente a grep -v o
  • -Encoding: per specificare la codifica dei caratteri

Trovo opportuno creare una funzione gcir per Get-ChildItem -Recurse ., con smarts per passare correttamente i parametri e un alias ss per Select-String. Quindi tu scrivi:

gcir * .txt | ss foo

30
Jay Bazuzi

Potrebbe non rientrare esattamente nella categoria "grep", ma non sono riuscito a cavarmela su Windows senza un'utilità chiamata AgentRansack . È un'utilità basata su gui "trova nei file" con supporto regex. È semplicissimo fare clic con il pulsante destro del mouse su una cartella, premere "ransack .." e trovare i file contenenti ciò che stai cercando. Estremamente veloce anche.

23
jasonmray

Baregrep ( Baretail è buono anche)

19
John Sheehan

Sono passati un paio d'anni da quando hai posto la domanda, ma ti consiglio AstroGrep ( http://astrogrep.sourceforge.net ).

È gratuito, open source e ha un'interfaccia semplice. Lo uso per cercare il codice tutto il tempo.

17
jj.

PowerShell è stato citato alcune volte. Ecco come lo useresti effettivamente in un modo grepish:

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

Cerca in modo ricorsivo tutti i file di testo nell'albero delle directory corrente per SomeString con distinzione tra maiuscole e minuscole.

Ancora meglio, esegui questo:

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

Quindi fa:

pgrep SomeStringToSearch *.txt

Quindi, per renderlo davvero magico, aggiungi l'alias della funzione al tuo PowerShell Profile e puoi quasi offuscare il dolore di non avere strumenti da riga di comando adeguati.

16
jslatts

Cygwin include grep. Tutti gli strumenti GNU AMD Unix funzionano perfettamente su Windows se si installa Cygwin.

http://www.cygwin.com/

14
Corey Goldberg

ack funziona bene su Windows (se hai Perl ). Lo trovo meglio di grep per molti usi.

13
cjm

Git su Windows = grep in cmd.exe

Ho appena scoperto di installare Git ti darà alcuni comandi di base di Linux: cat, grep, scp e tutti quelli buoni.

Installa quindi aggiungi la cartella Git bin al tuo PATH e poi il tuo cmd.exe ha le funzionalità di base di Linux!

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

13
Daniel Magnusson

dnGREP è uno strumento grep open source per Windows. Supporta una serie di fantastiche funzionalità tra cui:

  • Annulla per la sostituzione
  • Possibilità di cercare facendo clic destro sulla cartella in Explorer
  • Opzioni di ricerca avanzate come ricerca fonetica e xpath
  • Cerca all'interno di PDF file, archivi e documenti Word

IMHO, ha un'interfaccia piacevole e pulita :)

10
stankovski

Io uso sempre WinGREP , ma ho avuto problemi con esso non lasciando andare i file.

7
Tom Kidd

Ho usato con successo le utility GNU per Win32 per un bel po 'di tempo e ha un buon grep oltre a tail e altri utili utilit di gnu per win32. Evito la shell pacchettizzata e semplicemente uso gli eseguibili nel prompt di comando win32.

La coda che è confezionata è anche una buona piccola applicazione.

7
user17314

Bene, accanto alla porta di Windows del GNU grep a:

http://gnuwin32.sourceforge.net/

c'è anche il grep di Borland (molto simile a GNU uno) disponibile nel compilatore gratuito di C++ gratuito di Borland (è un freeware con strumenti a linea di comando).

7
Milan Babuškov

Sono l'autore di Aba Cerca e sostituisci. Proprio come PowerGREP, supporta le espressioni regolari, salva i modelli per un ulteriore utilizzo, annulla per sostituzioni, anteprima con evidenziazione della sintassi per HTML/CSS/JS/PHP, diverse codifiche, tra cui UTF-8 e UTF-16.

Rispetto a PowerGREP, la GUI è meno ingombrante. Aba inizia immediatamente la ricerca mentre si digita il pattern (ricerca incrementale), così puoi sperimentare con espressioni regolari e vedere immediatamente i risultati.

Sei il benvenuto per provare il mio strumento; Sarò felice di rispondere a qualsiasi domanda.

6
Peter Kankowski

Volevo uno strumento gratuito per grep per Windows che permettesse di fare clic con il tasto destro su una cartella e fare una ricerca regolare di ogni file - senza alcuno schermo nag.

Quanto segue è una soluzione rapida basata su findstr menzionata in un post precedente.

Crea un file di testo da qualche parte sul tuo disco rigido dove mantieni strumenti di lunga durata. Rinominare in .bat o .cmd e incollare quanto segue in esso:

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

Quindi accedere alla cartella SendTo. Su Windows 7 accedi a %APPDATA%\Microsoft\Windows\SendTo e trascina un collegamento del file batch nella cartella SendTo.

Ho rinominato il collegamento a 1 GREP per tenerlo in cima all'elenco SendTo.

Le cose che mi piacerebbe fare successivamente con pipe sono l'output di findstr attraverso qualcosa che genererebbe un file html in modo che tu possa cliccare su ogni linea di output per aprire quel file. Inoltre, non penso che funzioni con i collegamenti alle cartelle. Dovrei controllare il parametro e vedere se contiene ".lnk".

4
Philip Beck

Il mio strumento di scelta è il nome corretto di Windows Grep :

  • Bella semplice interfaccia grafica
  • supporta la ricerca e la sostituzione
  • può mostrare le linee attorno alle linee trovate
  • può cercare all'interno di colonne in file CSV e file a larghezza fissa
3
John N

UnxUtils è quello che uso, funziona perfettamente per me ...

3
Johan

Ho usato il grep di Borland per anni ma ho appena trovato uno schema che non corrisponderà. Eeeks. Che altro non ha trovato nel corso degli anni? Ho scritto una semplice ricerca di testo che fa la ricorsione come grep - è FS.EXE su source forge.

grep fallisce ...

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

windows findstr funziona ...

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
Jerry Lusa

Se vuoi un semplice strumento di Windows Grep, ne ho creato uno chiamato P-Grep che ho reso disponibile per il download gratuito dal mio sito web: www.adjutantit.com - menu iniziale, download.

Sembra che Windows Grep abbia problemi con un gran numero di file, quindi ho scritto il mio - che sembra più affidabile. È possibile selezionare una cartella, fare clic con il tasto destro e inviarla a P-Grep. La cartella sendto non viene aggiornata durante l'installazione.

2
John Pember

Un'altra buona scelta è MSYS . Ti offre un sacco di altre utility GNU per consentirti di essere più produttivo.

2
DDay

GREP per Windows

L'ho usato per sempre e per fortuna è ancora disponibile. È super veloce e molto piccolo.

1
bbrown

La stringa di selezione di PowerShell è simile, non ha le stesse opzioni e la stessa semantica, ma è comunque potente.

1
Jim Deville

Sto usando AJC Grep ogni giorno per anni. L'unica limitazione maggiore che ho trovato è che i percorsi dei file sono limitati a 255 caratteri e si ferma quando ne incontra uno, piuttosto che emettere un avviso. È fastidioso ma non succede molto spesso.

Lo uso su Windows 7 Ultimate a 64 bit, quindi le sue credenziali a 64 bit vanno bene.

1
CrispinH

Ho Cygwin installato sulla mia macchina e ho messo la directory bin Cygwin nel mio percorso ambientale, quindi Cygwin grep funziona come normale in una riga di comando che risolve tutti il mio scripting ha bisogno di grep al momento.

0
Satyrn

Se nessuna delle soluzioni è proprio ciò che stai cercando, potresti scrivere un wrapper su FindStr che fa esattamente ciò che ti serve?

FindStr è comunque abbastanza buono quindi dovrebbe essere solo una GUI su (se lo vuoi) e fornire alcune funzionalità extra (come combinarlo con Trova per trovare il numero di file che contengono una stringa specificata [menzionato sopra]).

Questo, naturalmente, presuppone che tu abbia i requisiti, il tempo e l'inclinazione per farlo!

0
Stefan