Quali sono i buoni strumenti grep per Windows? [chiuso]


289

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

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

Risposte:


204

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 funzioni preferite sono:

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

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

Dalle stesse meravigliose persone che ti hanno portato RegexBuddy e con cui non ho affiliazioni oltre ad 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 di Windows esistenti

Implementazioni di comandi Linux su Windows

Strumenti Grep con un'interfaccia grafica

Strumenti Grep aggiuntivi


4
Mi piacerebbe trovare una GUI grep open source facile da usare e piena di funzionalità come PowerGREP ma non ne ho ancora trovata :). Ho Cygwin installato e uso grep anche da questo.
Mark Biek,

21
@Wells - semplicemente vecchio * nix grep su Windows è gratuito tramite Cygwin o GnuWin32. FindStr e Find sono anche forniti con Windows. Grep con una grande interfaccia grafica, la possibilità di sostituire e l'annullamento integrato, oltre a molte altre funzionalità ... sì ... che ti costa un po 'di più.
Mike Clark,

11
@Wells, @Mike Clark, @Mark Biek: suppongo che non ci fossero simpatici strumenti grep GUI gratuiti per Windows quando è stata pubblicata questa risposta, ma non è più vero. grepWin ha tutte le funzionalità elencate in questa risposta, e ora potrebbero esserci anche altri concorrenti.
John Y

9
@Wells, odiare Windows perché uno strumento Grep costa $ 159 è come odiare le auto perché i tappetini sono costosi.
md1337,

9
@Wells and upvoters: qual è il manzo? Diversi altri strumenti GREP per Windows sono gratuiti come per unix / linux. In effetti, questo è ciò che amo dell'ecosistema di Windows: molto gratuito, se questo è il tuo criterio principale, E l'ecosistema spesso supporta gli sviluppatori paganti per esplorare estese quantità di funzionalità, come con PowerGREP. PowerGREP potrebbe non essere la tazza di tè di tutti (a volte la sua UI è travolgente), ma la sua elaboratezza ha utilità.
gwideman,

322

FINDSTR è abbastanza potente, supporta espressioni regolari e ha i vantaggi di essere già su tutti i computer 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 ricorsivamentefindstr /s text_to_find *


2
Ciò che manca a FINDSTR è un'opzione per visualizzare solo il conteggio delle righe che contengono la stringa. (come grep -c) Se ne hai bisogno puoi usare FIND / C.
Ra.

2
Se si desidera ripristinare il potere FINDSTR (e il modello non è regex), è sempre possibile, con una piccola ripetizione, concatenare i due comandi: findstr / s ".ini" * .rlog | trovare / c "ini"
Ray Hayes

10
Findstr non ha un supporto RegEx completo.
caltuntas,

5
.. il post originale non chiedeva specificamente RegEx!
Ray Hayes,

24
OK, non è grep, come hanno sottolineato alcuni altri commentatori. Ma non sapevo nemmeno che esistesse, quindi +1 a te, buon signore, per averlo pubblicato!
T.Rob

107

GrepWin gratuito e open source (GPL)

inserisci qui la descrizione dell'immagineSto usando grepWin che è stato scritto da uno dei ragazzi di tartaruga. Fa il lavoro su Windows ...

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


2
Ed è gratuito ed è in grado di cercare in directory / file nascosti che PowerGrep non è in grado di fare correttamente ...
Jérôme Verstrynge,

3
Non sembra avere un'interfaccia a riga di comando.
Andreas Haferburg,

2
È buono ma fornisce solo una riga di contesto e non è possibile vedere quel contesto fino a quando non è stata completata l'intera ricerca.
Matthew Lock,

2
Sembra uno strumento simpatico e semplice. Ma avevo bisogno dei risultati in un file e sembra che non mi dia la possibilità di esportare. Solo per questo motivo sono andato con AstroGrep.
Ross,

non cerca in pdf
JinSnow

53

Aggiornamento luglio 2013:

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

Stupore di AstroGrep

La sua capacità di mostrarmi più della semplice ricerca di riga (ovvero il --context = NUM ​​di un grep da riga di comando) è preziosa.
Ed è veloce. Molto veloce, anche su un vecchio computer con non- SSD unità (lo so, hanno usato per fare questo disco rigido con filatura dischi, chiamati piatti , a destra pazzo?)

È gratis.
È portatile (semplice archivio zip per decomprimerlo).


Risposta originale ottobre 2008

testo alternativoGnu Grep sta bene

Puoi scaricarlo ad esempio qui: ( sito ftp )

Tutte le solite opzioni sono qui.

Questo, combinato con gawk e xargs (include 'find', 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" *

Ho appena iniziato a cercare un sostituto di Gnu Grep poiché la versione di Windows non sembra essere in grado di gestire i miei file di testo da 10 Mb. Si siede lì e finge di non aver trovato nulla. Se riduco la dimensione del file, inizia a funzionare.
Peter M,

Ciao VonV, il tuo link di "solite opzioni" è diventato: 404 - Pagina non trovata. Ti preghiamo di considerare di modificare la tua risposta.
eeerahul,

1
Collegamento @eeerahul ripristinato ed esempio aggiunto
VonC

AstroGrep è bello ma sfortunatamente al momento manca la funzione "Trova e sostituisci", che per me è un
grosso problema

Manca la funzione "sostituisci"
XristosK

30

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

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

  • -Contesto: questo ti permette di vedere le linee prima e dopo la linea di corrispondenza
  • -AllMatches: che ti permette di vedere tutte le partite in una linea (in precedenza, potevi vedere solo la prima partita in una linea)
  • -NotMatch: equivalente a grep -vo
  • -Codifica: per specificare la codifica dei caratteri

Trovo opportuno creare una funzione gcirper Get-ChildItem -Recurse ., con intelligenza per passare correttamente i parametri e un alias ssper Select-String. Quindi scrivi:

gcir * .txt | ss foo


3
Esempio di equivalente grep -R: Get-ChildItem -recurse -include * .txt | Select-String -CaseSenstive "SomeString"
jslatts

6
Mi piacciono molto le funzionalità introdotte in PS, ma perché ogni comando deve essere più lungo del programma COBOL medio?
evilcandybag,

3
@evilcandybag: grazie all'eccellente completamento automatico, incluso il completamento automatico sui nomi dei parametri, digitare le righe di comando di PowerShell è semplice e veloce e posso leggere il risultato.
Jay Bazuzi,

1
@jslatts: o potresti usare alias e nomi parziali di parametri e sarebbels . *.txt -r| sls -ca "SomeString"
Rynant

1
È l'alias esistenti slsper Select-Stringdavvero troppo tempo?
Joey,

23

Potrebbe non rientrare esattamente nella categoria 'grep', ma non potrei cavarmela su Windows senza un'utilità chiamata AgentRansack . È un'utilità "trova nei file" basata su gui con supporto regex. È semplicissimo fare clic con il tasto destro del mouse su una cartella, premere "saccheggia .." e trovare i file che contengono ciò che stai cercando. Anche estremamente veloce.


Sfortunatamente, non può aprire un editor di testo esterno nella riga pertinente.
Pawel Furmaniak,

1
Prova la versione a pagamento chiamata Filelocator Pro, di gran lunga il miglior strumento grep che abbia mai usato.
Ian Stanway,

Filelocator pro esegue sostituzioni?
alimack,

Ha un'interfaccia molto bella, fa sostituzioni?
alimack

Inoltre ora si chiama Filelocator Lite
alimack il

19

Baregrep (Anche il baretail è buono)


non funziona su win7 64 bit; (
Daniel Magnusson,

Sono abbastanza sicuro che lo abbiano risolto ormai. La mia lamentela principale contro BareTail è che non puoi "filtrare" il registro per nascondere (non solo il colore) linee irrilevanti.
Ed Brannin,

1
Puoi filtrare e cercare con BareTailPro, ma non con la versione gratuita (BareTail).
Clay,

Sono abbastanza sicuro che non lo abbiano risolto ormai, dal momento che non è stato aggiornato dal 2006.
alldayremix

4
Funziona bene su Windows 7 Pro 64 bit qui.
cb88,

17

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

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


ma non cerca in pdf
JinSnow

16

PowerShell è stato menzionato alcune volte. Ecco come lo useresti effettivamente in modo grigiastro:

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

Cerca ricorsivamente tutti i file di testo nella struttura di directory corrente SomeStringcon la 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 di funzione al tuo profilo PowerShell e puoi quasi attenuare il dolore di non avere gli strumenti della riga di comando adeguati.





10

dnGREP è uno strumento grep open source per Windows. Supporta una serie di funzioni interessanti tra cui:

  • Annulla per sostituire
  • Possibilità di cercare facendo clic con il tasto destro sulla cartella in Explorer
  • Opzioni di ricerca avanzata come ricerca fonetica e xpath
  • Cerca all'interno di file PDF, archivi e documenti Word

IMHO, ha anche un'interfaccia bella e pulita :)


1
Ho provato alcuni degli strumenti grep suggeriti e, per me, dnGrep vince.
flobadob,

Cerca in pdf ma non epub
JinSnow

Modifica: può cercare epub. È necessario aggiungerlo in questo modo: github.com/dnGrep/dnGrep/issues/200
JinSnow

7

Uso sempre WinGREP , ma ho avuto problemi a non lasciare andare i file.


2
Ho usato Wingrep per diversi anni, è eccezionale con l'eccezione che le caselle di selezione directory sono troppo piccole
Cruachan,

La licenza richiede il pagamento dopo una valutazione di 30 giorni.
chip

Ha una bella caratteristica che molti strumenti grep non hanno, la possibilità di invertire le partite. Comodo per trovare file HTML senza qualcosa in essi, diciamo.
Matthew Lock,

Ho notato una caratteristica molto fastidiosa di WinGrep però. Sembra mantenere un blocco di file su tutte le corrispondenze effettuate, quindi se si tenta di eliminare uno di quei file in Esplora risorse non è possibile fino a quando non si chiude WinGrep.
Matthew Lock,

Se potesse cercare nei risultati di ricerca, restringendo ulteriormente l'elenco, sarebbe lo strumento ideale per me.
Shamil,



6

Sono l'autore di Aba Search and Replace. Proprio come PowerGREP, supporta espressioni regolari, salvataggio di schemi per un ulteriore utilizzo, annullamento per sostituzioni, anteprima con evidenziazione della sintassi per HTML / CSS / JS / PHP, codifiche diverse, tra cui UTF-8 e UTF-16.

In confronto a PowerGREP, la GUI è meno ingombra. Aba inizia immediatamente la ricerca mentre digiti il ​​modello (ricerca incrementale), in modo da poter sperimentare espressioni regolari e vedere immediatamente i risultati.

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


4

Volevo uno strumento grep gratuito per Windows che ti permettesse di fare clic con il tasto destro su una cartella e fare una ricerca regex di ogni file, senza alcuna schermata di nag.

Quella che segue è una soluzione rapida basata su quella findstrmenzionata in un post precedente.

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

@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 passare alla cartella SendTo. Su Windows 7, selezionare %APPDATA%\Microsoft\Windows\SendToe trascinare un collegamento del file batch nella cartella SendTo.

Ho rinominato il collegamento per 1 GREPtenerlo in cima all'elenco SendTo.

Le cose che mi piacerebbe fare successivamente con questo sono il pipe dell'output findstrattraverso qualcosa che genererebbe un file html in modo da poter fare clic su ciascuna riga di output per aprire quel file. Inoltre, non penso che funzioni con le scorciatoie per le cartelle. Dovrei ispezionare il parametro e vedere se contiene ".lnk".



3

Ho usato il grep di Borland per anni, ma ho appena trovato uno schema che non corrisponde. Eeeks. Cos'altro non ha trovato negli anni? Ho scritto una semplice sostituzione di ricerca di testo che fa ricorsione come grep - è FS.EXE sulla forge di origine.

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

Il mio strumento preferito è il nome appropriato di Windows Grep :

  • bella semplice interfaccia grafica
  • supporta la ricerca e la sostituzione
  • può mostrare le linee attorno alle linee trovate
  • può cercare tra colonne in file CSV e file a larghezza fissa

Purtroppo fuori produzione, l'ho usato per anni.
alimack

@alimack Sì, l'ho notato di recente da solo. Tuttavia, lo strumento funziona ancora (almeno su Windows 7) e può ancora essere scaricato da artisti del calibro di CNET. Un peccato, è stato uno strumento molto carino.
John N,

Alla ricerca di un'interfaccia sostitutiva, PowerGREP promettente ma brutta e costosa. Ho provato grep Vinto, ossa troppo nude, Filelocator non sembra sostituire il testo. Suggerimenti benvenuti, in particolare mi piace vedere i risultati prima di impegnarmi a sostituirli.
alimack,

2

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


2

Se vuoi un semplice strumento 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 principale, download.

Windows Grep sembrava avere 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 inviarlo a P-Grep. La cartella sendto non viene aggiornata durante l'installazione.


2

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


1

Uso AJC Grep ogni giorno da anni. L'unica grande limitazione che ho riscontrato è che i percorsi dei file sono limitati a 255 caratteri e si interrompe 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

GREP per Windows

Lo uso da sempre e per fortuna è ancora disponibile. È super veloce e molto piccolo.


Esiste persino una GUI? Lo uso semplicemente dalla riga di comando, quindi non me ne sono mai reso conto.
bbrown

Stavo cercando un modo semplice per mostrare le linee prima e dopo la partita e questo l'ha fatto. Ad esempio: eseguire 'netstat -anb | grep -B1 22 'per sapere quali programmi ascoltano la porta 22.
Jan Ehrhardt

0

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

FindStr è comunque abbastanza buono, quindi dovrebbe semplicemente rovesciare una GUI (se lo desideri) e fornire alcune funzionalità extra (come combinarlo con Trova per trovare il conteggio dei file che contengono una stringa specificata [menzionata sopra]).

Questo, ovviamente, presuppone che tu abbia il requisito, il tempo e la propensione per farlo!


0

Ho installato Cygwin sulla mia macchina e ho inserito la directory bin di Cygwin nel mio percorso ambientale, quindi il grep di Cygwin funziona come al solito in una riga di comando che al momento risolve tutte le mie esigenze di scripting per grep.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.