Quels sont les bons outils grep pour Windows? [fermé]

289

Des recommandations sur les outils grep pour Windows? Idéalement, ceux qui pourraient tirer parti du système d'exploitation 64 bits.

Je connais Cygwin , bien sûr, et j'ai également trouvé PowerGREP , mais je me demande s'il y a des joyaux cachés?

Portman
la source

Réponses:

204

Sur la base des recommandations dans les commentaires, j'ai commencé à utiliser grepWin et c'est fantastique et gratuit .


(Je suis toujours fan de PowerGREP , mais je ne l'utilise plus.)

Je sais que vous l'avez déjà mentionné, mais PowerGREP est génial .

Certaines de mes fonctionnalités préférées sont:

  • Cliquez avec le bouton droit sur un dossier pour exécuter PowerGREP dessus
  • Utiliser des expressions régulières ou du texte littéral
  • Spécifiez des caractères génériques pour les fichiers à inclure et exclure
  • Rechercher et remplacer
  • Le mode Aperçu est agréable car vous pouvez vous assurer de remplacer ce que vous avez l'intention de faire.

Maintenant, je me rends compte que les autres outils grep peuvent faire tout ce qui précède. C'est juste que PowerGREP regroupe toutes les fonctionnalités dans une interface graphique très facile à utiliser.

Des mêmes personnes merveilleuses qui vous ont amené RegexBuddy et avec qui je n'ai aucune affiliation au-delà de l'amour de leurs affaires. (Il convient de noter que RegexBuddy comprend une version de base de grep (pour Windows) elle-même et coûte beaucoup moins cher que PowerGREP.)


Solutions complémentaires

Commandes Windows existantes

Implémentations de commandes Linux sur Windows

Outils Grep avec une interface graphique

Outils Grep supplémentaires

Mark Biek
la source
4
J'adorerais trouver un GUI grep open source aussi facile à utiliser et aussi complet que PowerGREP mais je n'en ai pas encore trouvé :). J'ai installé Cygwin et j'utilise également grep à partir de cela.
Mark Biek
21
@Wells - plain old * nix grep sur Windows est gratuit via Cygwin ou GnuWin32. FindStr et Find sont également fournis avec Windows. Grep avec une excellente interface graphique, la possibilité de remplacer et d'annuler intégré, ainsi que de nombreuses autres fonctionnalités ... ouais ... cela vous coûte un peu plus.
Mike Clark
11
@Wells, @Mike Clark, @Mark Biek: Je suppose qu'il est possible qu'il n'y ait pas eu de bons outils de grep GUI gratuits pour Windows lorsque cette réponse a été publiée, mais ce n'est plus vrai. grepWin possède toutes les fonctionnalités répertoriées dans cette réponse, et il peut également y avoir d'autres concurrents maintenant.
John Y
9
@Wells, détester Windows parce qu'un outil Grep coûte 159 $, c'est comme détester les voitures parce que les tapis de sol sont chers.
md1337
9
@Wells et upvoters: Quel est le boeuf? Plusieurs autres outils GREP pour Windows sont tout aussi gratuits que pour unix / linux. En effet, c'est ce que j'aime dans l'écosystème Windows - beaucoup de gratuit, si c'est votre critère principal, ET l'écosystème prend souvent en charge les développeurs payants pour explorer des quantités étendues de fonctionnalités, comme avec PowerGREP. PowerGREP n'est peut-être pas la tasse de thé de tout le monde (parfois son interface utilisateur est écrasante), mais son caractère élaboré a une utilité.
gwideman
322

FINDSTR est assez puissant, prend en charge les expressions régulières et a déjà l'avantage d'être sur toutes les machines 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

Exemple d'utilisation: findstr text_to_find *ou pour effectuer une recherche récursivefindstr /s text_to_find *

Ray Hayes
la source
2
Ce qui manque à FINDSTR, c'est une option pour afficher uniquement le nombre de lignes contenant la chaîne. (comme grep -c) Si vous en avez besoin, vous pouvez utiliser FIND / C.
Ra.
2
Si vous voulez que la puissance FINDSTR soit rétablie (et que votre modèle n'est pas regex), vous pouvez toujours, avec quelques petites répétitions, enchaîner les deux commandes: findstr / s ".ini" * .rlog | find / c ".ini"
Ray Hayes
10
Findstr ne dispose pas d'une prise en charge complète de RegEx.
caltuntas
5
.. le message d'origine ne demandait pas spécifiquement RegEx!
Ray Hayes
24
OK, ce n'est pas grep, comme l'ont souligné certains des autres commentateurs. Mais je ne savais même pas qu'il existait donc +1 à vous bon monsieur pour l'avoir posté!
T.Rob
107

GrepWin Libre et open source (GPL)

entrez la description de l'image iciJ'ai utilisé grepWin qui a été écrit par l'un des gars de tortoisesvn. Est-ce que le travail sous Windows ...

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

Shannon
la source
2
Et c'est gratuit et il est capable de rechercher dans des répertoires / fichiers cachés que PowerGrep n'est pas capable de faire correctement ...
Jérôme Verstrynge
3
Ne semble pas avoir d'interface de ligne de commande.
Andreas Haferburg
2
C'est bien, mais cela ne donne qu'une seule ligne de contexte, et vous ne pouvez pas voir ce contexte jusqu'à ce qu'il ait terminé toute la recherche.
Matthew Lock
2
Cela semble être un outil simple et agréable. Mais j'avais besoin des résultats dans un fichier et il ne semble pas me donner la possibilité d'exporter. Pour cette seule raison, je suis allé avec AstroGrep.
Ross
ne recherche pas en pdf
JinSnow
53

Mise à jour de juillet 2013:

AstroGrep est un autre outil grep que j'utilise maintenant tout le temps sur Windows :

AstroGrep awesomeness

Sa capacité à me montrer plus que la simple recherche en ligne (c'est-à-dire le --context = NUM ​​d'un grep en ligne de commande) est inestimable.
Et c'est rapide. Très rapide, même sur un vieil ordinateur avec un lecteur non SSD (je sais, ils faisaient ce disque dur avec des disques en rotation , appelés plateaux , c'est fou, non?)

Ce est gratuit.
Il est portable (archive zip simple à décompresser).


Réponse originale octobre 2008

texte alternatifGnu Grep va bien

Vous pouvez le télécharger par exemple ici: ( site ftp )

Toutes les options habituelles sont ici.

Cela, combiné avec gawk et xargs (inclut 'find', de GnuWin32 ), et vous pouvez vraiment écrire un script comme si vous étiez sur Unix!

Voir aussi les options que j'utilise pour grep récursivement :

grep --include "*.xxx" -nRHI "my Text to grep" *
VonC
la source
Je viens de commencer à chercher un remplaçant pour Gnu Grep car la version Windows ne semble pas être capable de gérer mes fichiers texte de 10 Mo. Il est juste assis là et prétend n'avoir rien trouvé. Si je réduis la taille du fichier, cela commence à fonctionner.
Peter M
Bonjour VonV, votre lien "options habituelles" est devenu: 404 - Page non trouvée. Veuillez envisager de modifier votre réponse.
eeerahul
1
Lien @eeerahul restauré et exemple ajouté
VonC
AstroGrep est sympa mais malheureusement il manque actuellement la fonction «Rechercher et remplacer», ce qui est pour moi une rupture
Łukasz Wiatrak
Il lui manque la fonction "remplacer"
XristosK
30

L'applet de commande Select-String de PowerShell était correcte dans la version 1.0, mais elle est nettement meilleure pour la version 2.0 . Avoir PowerShell intégré aux versions récentes de Windows signifie que vos compétences ici seront toujours utiles, sans installer d'abord quelque chose.

Nouveaux paramètres ajoutés à Select-String : l'applet de commande Select-String prend désormais en charge de nouveaux paramètres, tels que:

  • -Contexte: Cela vous permet de voir les lignes avant et après la ligne de correspondance
  • -AllMatches: qui vous permet de voir toutes les correspondances dans une ligne (Auparavant, vous ne pouviez voir que la première correspondance dans une ligne)
  • -NotMatch: équivalent à grep -vo
  • -Encoding: pour spécifier l'encodage des caractères

Je trouve opportun de créer une fonction gcirpour Get-ChildItem -Recurse ., avec smarts pour passer les paramètres correctement, et un alias sspour Select-String. Alors vous écrivez:

gcir * .txt | ss foo

Jay Bazuzi
la source
3
Exemple d'équivalent grep -R: Get-ChildItem -recurse -include * .txt | Select-String -CaseSenstive "SomeString"
jslatts
6
J'aime beaucoup les fonctionnalités introduites dans PS, mais pourquoi chaque commande doit-elle être plus longue que le programme COBOL moyen?
evilcandybag
3
@evilcandybag: Grâce à une excellente saisie semi-automatique, y compris la saisie semi-automatique sur les noms de paramètres, la saisie des lignes de commande PowerShell est rapide et facile, et je peux lire le résultat.
Jay Bazuzi
1
@jslatts: ou vous pouvez utiliser des alias et des noms de paramètres partiels et ce seraitls . *.txt -r| sls -ca "SomeString"
Rynant
1
Est -ce l'alias existants slspour Select-Stringvraiment trop longtemps?
Joey
23

Il ne tombe peut-être pas exactement dans la catégorie «grep», mais je ne pourrais pas m'en sortir sous Windows sans un utilitaire appelé AgentRansack . Il s'agit d'un utilitaire de recherche dans les fichiers basé sur une interface graphique avec un support regex. Il est très simple de cliquer avec le bouton droit sur un dossier, d'appuyer sur "saccager ..." et de trouver des fichiers contenant ce que vous recherchez. Extrêmement rapide aussi.

jasonmray
la source
Malheureusement, il ne peut pas ouvrir l'éditeur de texte externe à la ligne appropriée.
Pawel Furmaniak
1
Essayez la version payante appelée Filelocator Pro, de loin le meilleur outil de grep que j'ai jamais utilisé.
Ian Stanway
Filelocator pro fait-il des remplacements?
alimack
Il a une très belle interface, fait-il des remplacements?
alimack
De plus, il s'appelle désormais Filelocator lite
alimack
19

Baregrep ( Baretail est bon aussi)

John Sheehan
la source
ne fonctionne pas sur win7 64 bits; (
Daniel Magnusson
Je suis presque sûr qu'ils ont corrigé cela maintenant. Ma principale plainte contre BareTail est que vous ne pouvez pas "filtrer" le journal pour masquer (pas seulement la couleur) les lignes non pertinentes.
Ed Brannin
1
Vous pouvez filtrer et rechercher avec BareTailPro, mais pas avec la version gratuite (BareTail).
Clay
Je suis presque sûr qu'ils n'ont pas corrigé cela maintenant, car il n'a pas été mis à jour depuis 2006.
alldayremix
4
Cela fonctionne bien sur Windows 7 Pro 64 bits ici.
cb88
17

Cela fait quelques années que vous avez posé la question, mais je recommanderais AstroGrep ( http://astrogrep.sourceforge.net ).

C'est gratuit, open source et dispose d'une interface simple. Je l'utilise pour rechercher du code tout le temps.

jj.
la source
mais il ne recherche pas en pdf
JinSnow
16

PowerShell a été mentionné à plusieurs reprises. Voici comment vous l'utiliseriez en fait de manière grecque:

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

Il recherche récursivement tous les fichiers texte dans l'arborescence de répertoires actuelle SomeStringavec une sensibilité à la casse.

Encore mieux, lancez ceci:

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

Alors fais:

pgrep SomeStringToSearch *.txt

Ensuite, pour vraiment le rendre magique, ajoutez l'alias de fonction à votre profil PowerShell et vous pouvez presque atténuer la douleur de ne pas avoir les outils de ligne de commande appropriés.

jslatts
la source
14

Cygwin inclut grep. Tous les outils GNU et les choses Unix fonctionnent très bien sur Windows si vous installez Cygwin.

http://www.cygwin.com/

Corey Goldberg
la source
14

ack fonctionne bien sous Windows (si vous avez Perl ). Je le trouve meilleur que grep pour de nombreuses utilisations.

Peter Mortensen
la source
14

Git sur Windows = grep dans cmd.exe

Je viens de découvrir que l'installation de Git vous donnera quelques commandes Linux de base: cat, grep, scp et toutes les autres bonnes.

Installez puis ajoutez le dossier Git bin à votre CHEMIN et votre cmd.exe a une fonctionnalité Linux de base!

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

Daniel Magnusson
la source
ça le fait ! parfait maintenant j'ai grep sur le système sans outils tiers.
himanshuxd
10

dnGREP est un outil grep open source pour Windows. Il prend en charge un certain nombre de fonctionnalités intéressantes, notamment:

  • Annuler pour remplacer
  • Possibilité de rechercher en cliquant avec le bouton droit sur le dossier dans l'explorateur
  • Options de recherche avancées telles que la recherche phonétique et xpath
  • Rechercher dans des fichiers PDF, des archives et des documents Word

À mon humble avis, il a aussi une interface agréable et propre :)

stankovski
la source
1
J'ai essayé pas mal d'outils de grep suggérés et, pour moi, dnGrep gagne.
flobadob
Il recherche en pdf mais pas en epub
JinSnow
Edit: il peut rechercher epub. Vous devez l'ajouter comme ceci: github.com/dnGrep/dnGrep/issues/200
JinSnow
7

J'utilise toujours WinGREP , mais j'ai eu des problèmes avec le fait qu'il ne lâche pas les fichiers.

Tom Kidd
la source
2
J'utilise wingrep depuis plusieurs années, c'est génial à l'exception que les boîtes de sélection de répertoire sont beaucoup trop petites
Cruachan
La licence vous oblige à payer après une évaluation de 30 jours.
puce
Il a une fonctionnalité intéressante que de nombreux outils grep n'ont pas, la possibilité d'inverser les correspondances. Pratique pour trouver des fichiers HTML sans quelque chose en eux, par exemple.
Matthew Lock
J'ai remarqué une fonctionnalité très ennuyeuse de WinGrep. Il semble garder un verrou de fichier sur toutes les correspondances qu'il a faites, et donc si vous essayez de supprimer l'un de ces fichiers dans l'Explorateur Windows, vous ne pouvez pas le faire avant de fermer WinGrep.
Matthew Lock
S'il pouvait rechercher dans les résultats de recherche, en réduisant encore la liste, ce serait un outil idéal pour moi.
Shamil
7

Eh bien, à côté du port Windows du grep GNU à:

http://gnuwin32.sourceforge.net/

il y a aussi le grep de Borland (très similaire à celui de GNU) disponible dans le freeware Borland Free C ++ Compiler (c'est un freeware avec des outils en ligne de commande).

Milan Babuškov
la source
7

J'ai utilisé avec succès les utilitaires GNU pour Win32 depuis un certain temps et il a un bon grep ainsi que la queue et d'autres utilitaires gnu pratiques pour win32. J'évite le shell emballé et j'utilise simplement les exécutables directement dans l'invite de commande win32.

La queue qui est emballée est également une bonne petite application.

user17314
la source
6

Je suis l'auteur d' Aba Search and Replace. Tout comme PowerGREP, il prend en charge les expressions régulières, l'enregistrement de modèles pour une utilisation ultérieure, l'annulation pour les remplacements, l'aperçu avec mise en évidence de la syntaxe pour HTML / CSS / JS / PHP, différents encodages, y compris UTF-8 et UTF-16.

En comparaison avec PowerGREP, l'interface graphique est moins encombrée. Aba commence instantanément la recherche lorsque vous tapez le motif (recherche incrémentielle), afin que vous puissiez expérimenter avec des expressions régulières et voir immédiatement les résultats.

Vous êtes invités à essayer mon outil; Je me ferai un plaisir de répondre à toutes vos questions.

Peter Kankowski
la source
4

Je voulais un outil grep gratuit pour Windows qui vous permettait de faire un clic droit sur un dossier et de faire une recherche regex de chaque fichier - sans écran de rappel.

Ce qui suit est une solution rapide basée sur celle findstrmentionnée dans un article précédent.

Créez un fichier texte quelque part sur votre disque dur où vous conservez des outils de longue durée. Renommez-le en .bat ou .cmd et collez-y ce qui suit:

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

Naviguez ensuite jusqu'au dossier SendTo. Sous Windows 7, recherchez %APPDATA%\Microsoft\Windows\SendToet faites glisser un raccourci du fichier de commandes vers ce dossier SendTo.

J'ai renommé le raccourci pour 1 GREPle garder en haut de la liste SendTo.

Ce que j'aimerais faire ensuite, c'est diriger la sortie de findstrquelque chose qui générerait un fichier html afin que vous puissiez cliquer sur chaque ligne de sortie pour ouvrir ce fichier. De plus, je ne pense pas que cela fonctionne avec les raccourcis vers les dossiers. Je devrais inspecter le paramètre et voir s'il contient ".lnk".

Philip Beck
la source
3

UnxUtils est celui que j'utilise, fonctionne parfaitement pour moi ...

Johan
la source
3

J'ai utilisé le grep de Borland pendant des années, mais je viens de trouver un modèle qui ne correspondra pas. Eeeks. Quoi d'autre n'a-t-il pas trouvé au fil des ans? J'ai écrit un remplacement de recherche de texte simple qui fait une récursion comme grep - c'est FS.EXE sur la forge source.

grep échoue ...

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

windows findstr fonctionne ...

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]
Jerry Lusa
la source
3

Mon outil de choix est le Windows Grep correctement nommé :

  • belle interface graphique simple
  • prend en charge la recherche et le remplacement
  • peut montrer les lignes autour des lignes trouvées
  • peut rechercher dans les colonnes dans les fichiers CSV et à largeur fixe
John N
la source
Malheureusement abandonné, je l'utilise depuis des années.
alimack
@alimack Oui, je l'ai moi-même remarqué récemment. Cependant, l'outil fonctionne toujours (sur Windows 7 au moins) et peut toujours être téléchargé à partir de CNET. Dommage, c'était un très bel outil.
John N
Vous cherchez un remplacement, une interface prometteuse mais laide PowerGREP et très chère. GrepWin essayé, os trop nus, Filelocator ne semble pas faire de remplacement de texte. Les suggestions sont les bienvenues - en particulier, comme voir les résultats avant de m'engager à les remplacer.
alimack
2

La chaîne de sélection de PowerShell est similaire, ce ne sont pas les mêmes options et sémantique, mais elle est toujours puissante.

Jim Deville
la source
2

Si vous voulez un outil Windows Grep simple à utiliser, j'en ai créé un appelé P-Grep que j'ai rendu disponible en téléchargement gratuit depuis mon site Web: www.adjutantit.com - menu d'accueil, téléchargements.

Windows Grep semblait avoir des problèmes avec un grand nombre de fichiers, j'ai donc écrit le mien - ce qui semble plus fiable. Vous pouvez sélectionner un dossier, faire un clic droit et l'envoyer à P-Grep. Le dossier sendto n'est pas mis à jour pendant l'installation.

John Pember
la source
2

Un autre bon choix est MSYS . Il vous donne un tas d'autres utilitaires GNU pour vous permettre d'être plus productif.

DDay
la source
1

J'utilise AJC Grep quotidiennement depuis des années. La seule limitation majeure que j'ai trouvée est que les chemins d'accès aux fichiers sont limités à 255 caractères et il s'arrête lorsqu'il en rencontre un, plutôt que de simplement émettre un avertissement. C'est ennuyeux mais ça n'arrive pas très souvent.

Je l'utilise sur Windows 7 Ultimate 64 bits, donc ses informations d'identification 64 bits sont très bien.

CrispinH
la source
1

GREP pour Windows

Je l'utilise depuis toujours et heureusement, il est toujours disponible. C'est super rapide et très petit.

brun
la source
Y a-t-il même une interface graphique? Je l'utilise simplement depuis la ligne de commande, donc je ne m'en suis jamais rendu compte.
bbrown
Je cherchais un moyen simple de montrer les lignes avant et après le match et celui-ci l'a fait. Par exemple: exécutez 'netstat -anb | grep -B1 22 'pour savoir quels programmes écoutent le port 22.
Jan Ehrhardt
0

Si aucune des solutions n'est tout à fait ce que vous cherchez, peut-être pourriez-vous écrire à FindStr un wrapper qui fait exactement ce dont vous avez besoin?

FindStr est assez bon de toute façon, il devrait donc simplement faire tomber une interface graphique (si vous le souhaitez) et fournir quelques fonctionnalités supplémentaires (comme la combiner avec Find pour trouver le nombre de fichiers qui contiennent une chaîne spécifiée [mentionnée ci-dessus]).

Ceci, bien sûr, suppose que vous avez les exigences, le temps et l'envie de le faire!

Stefan
la source
0

J'ai installé Cygwin sur ma machine et j'ai mis le répertoire bin Cygwin dans mon chemin environnemental, donc le grep Cygwin fonctionne comme d'habitude dans une ligne de commande qui résout tous mes besoins de script pour grep pour le moment.

Peter Mortensen
la source