web-dev-qa-db-fra.com

Quels sont les bons outils grep pour Windows?

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

Je suis au courant de Cygwin , bien sûr, et j'ai également trouvé PowerGREP , mais je me demande s'il existe des trésors cachés?

290
Portman

D'après les recommandations des 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 en avez déjà parlé, mais PowerGREP est génial .

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

  • Cliquez avec le bouton droit sur un dossier pour y lancer PowerGREP
  • Utilisez des expressions régulières ou du texte littéral
  • Spécifier des caractères génériques pour les fichiers à inclure et à exclure
  • Rechercher et remplacer
  • Le mode de prévisualisation est agréable car vous pouvez vous assurer de remplacer ce que vous souhaitez.

Maintenant, je réalise que les autres outils de grep peuvent faire tout ce qui précède. C'est simplement 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 avec au-delà d'aimer leurs affaires. (Il est à noter que RegexBuddy inclut une version de base de grep (pour Windows) et coûte beaucoup moins cher que PowerGREP.)


Solutions additionnelles

Commandes Windows existantes

Implémentations de commandes Linux sous Windows

Outils Grep avec une interface graphique

Outils Grep supplémentaires

194
Mark Biek

FINDSTR est assez puissant, prend en charge expressions régulières et présente l'avantage d'être déjà présent 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écursive findstr /s text_to_find *

317
Ray Hayes

GrepWin Source libre et open source (GPL)

enter image description hereJ'utilise grepWin qui a été écrit par l'un des gars de Tortoisesvn. Est-ce que le travail sur Windows ...

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

106
Stan Sarama

Mise à jour juillet 2013:

Un autre outil grep que j’utilise maintenant tout le temps sous Windows est AstroGrep :

AstroGrep awesomeness

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

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


Réponse originale octobre 2008

alt textGnu Grep tout va bien

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

Tous les options habituelles sont ici.

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

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

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

La cmdlet Select-String de PowerShell était correcte dans la version 1.0, mais est nettement meilleure pour la version 2. . Avoir PowerShell intégré aux versions récentes de Windows signifie que vos compétences ici seront toujours utiles, sans rien installer au préalable.

Nouveaux paramètres ajoutés à Select-String : La cmdlet Select-String prend désormais en charge de nouveaux paramètres, tels que:

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

Je trouve qu’il est opportun de créer une fonction gcir pour Get-ChildItem -Recurse ., avec un habileté de communiquer correctement les paramètres et un alias ss pour Select-String. Donc, vous écrivez:

gcir * .txt | ss foo

30
Jay Bazuzi

Cela ne tombe peut-être pas dans la catégorie 'grep', mais je ne pourrais pas m'en passer sous Windows sans un utilitaire appelé AgentRansack . C'est un utilitaire "trouver dans les fichiers" basé sur une interface graphique qui prend en charge regex. Il est très simple de cliquer avec le bouton droit de la souris sur un dossier, de cliquer sur "Télécharger" et de trouver les fichiers contenant ce que vous cherchez. Extrêmement rapide aussi.

23
jasonmray

Baregrep ( Baretail c'est bien aussi)

19
John Sheehan

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 possède une interface simple. Je l'utilise pour rechercher du code tout le temps.

17
jj.

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

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

Il recherche de manière récursive tous les fichiers texte de l'arborescence de répertoires en cours pour rechercher SomeString avec 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 que ce soit vraiment magique, ajoutez l’alias de fonction à votre profil PowerShell et vous pouvez presque oublier la douleur de ne pas disposer d’outils de ligne de commande appropriés.

16
jslatts

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

14
cjm

Cygwin inclut grep. Tous les GNU outils AMD Unix fonctionnent parfaitement sous Windows si vous installez Cygwin.

http://www.cygwin.com/

14
Corey Goldberg

Git sous Windows = grep dans cmd.exe

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

Installez puis ajoutez le dossier Git bin à votre PATH, puis votre cmd.exe a les fonctionnalités de base de Linux!

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

13
Daniel Magnusson

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

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

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

10
stankovski

J'utilise toujours WinGREP , mais j'ai eu des problèmes avec le fait de ne pas abandonner les fichiers.

7
Tom Kidd

J'ai utilisé avec succès tilitaires GNU pour Win32 pendant un certain temps et il possède un bon grep, ainsi que la queue et d'autres utilitaires bien utiles pour win32. J'évite le Shell empaqueté et utilise simplement les exécutables directement dans la commande win32 Invite.

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

7
user17314

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

http://gnuwin32.sourceforge.net/

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

7
Milan Babuškov

Je suis l'auteur de Aba Search and Replace. Tout comme PowerGREP, il prend en charge les expressions régulières, enregistre les motifs pour une utilisation ultérieure, annule les remplacements, affiche un aperçu avec la syntaxe en surbrillance pour HTML/CSS/JS/PHP, différents codages, y compris UTF-8 et UTF-16.

En comparaison avec PowerGREP, l’interface graphique est moins encombrée. Aba commence instantanément à chercher lorsque vous tapez le motif (incrémental). recherche), 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 serai heureux de répondre à vos questions.

6
Peter Kankowski

Je voulais un outil grep gratuit pour Windows qui vous permette de cliquer avec le bouton droit de la souris sur un dossier et d'effectuer une recherche régulière de tous les fichiers - sans aucun écran de rappel.

Ce qui suit est une solution rapide basée sur la findstr mentionnée dans un précédent post.

Créez un fichier texte quelque part sur votre disque dur où vous conserverez des outils à vie longue. Renommez en .bat ou .cmd et collez-y les éléments suivants:

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

Ensuite, accédez au dossier SendTo. Sous Windows 7, accédez à %APPDATA%\Microsoft\Windows\SendTo et faites glisser un raccourci du fichier de traitement par lots vers ce dossier SendTo.

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

Ce que je voudrais faire ensuite avec ceci est de diriger la sortie de findstr par quelque 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".

4
Philip Beck

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

  • Belle interface graphique simple
  • prend en charge la recherche et le remplacement
  • peut montrer les lignes autour des lignes trouvées
  • peut effectuer une recherche dans les colonnes de fichiers CSV et de fichiers à largeur fixe
3
John N

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

3
Johan

J'ai utilisé le grep de Borland pendant des années, mais je viens de trouver un motif qui ne correspond pas. Eeeks. Quoi d'autre n'a-t-il pas trouvé au fil des ans? J'ai écrit un simple substitut de recherche de texte faisant la récursion comme grep - il s'agit de FS.EXE sur source forge.

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

PowerShell select-string est similaire, ce ne sont pas les mêmes options et la même sémantique, mais cela reste puissant.

2
Jim Deville

Si vous voulez un outil simple à utiliser Windows Grep, j’en ai créé un nommé P-Grep que je vous ai proposé de télécharger gratuitement sur mon site Web: www.adjutantit.com - menu principal, téléchargements.

Windows Grep semblait avoir des problèmes avec un grand nombre de fichiers, j'ai donc écrit le mien - qui semble plus fiable. Vous pouvez sélectionner un dossier, cliquer avec le bouton droit de la souris et l’envoyer à P-Grep. Le dossier sendto n'est plus à jour lors de l'installation.

2
John Pember

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

2
DDay

GREP pour Windows

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

1
bbrown

J'utilise AJC Grep quotidiennement depuis des années. La seule limitation majeure que j'ai trouvée est que les chemins de fichiers sont limités à 255 caractères et s'arrêtent dès qu'ils en rencontrent un, plutôt que d'émettre un avertissement. C'est agaçant mais cela n'arrive pas très souvent.

Je l'utilise sous Windows 7 Ultimate 64 bits, donc ses informations d'identification 64 bits sont correctes.

1
CrispinH

Cygwin est installé sur ma machine et place le répertoire bin de Cygwin dans mon chemin environnemental. Le grep de Cygwin fonctionne donc normalement dans une ligne de commande, ce qui résout tous les besoins de script pour grep pour le moment.

0
Satyrn

Si aucune des solutions ne correspond vraiment à ce que vous recherchez, vous pourriez peut-être écrire un wrapper à FindStr qui fasse exactement ce que vous souhaitez?

FindStr est quand même assez bon, donc il devrait simplement bricoler une interface graphique (si vous le souhaitez) et fournir quelques fonctionnalités supplémentaires (comme le combiner avec Rechercher pour trouver le nombre de fichiers contenant une chaîne spécifiée [mentionnée ci-dessus]).

Ceci, bien sûr, suppose que vous ayez l'exigence, le temps et l'envie de le faire!

0
Stefan