Quels sont les bons outils grep pour Windows? [fermé]
28 réponses
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.
Certains de mes fonctionnalités préférées sont:
- faites un clic droit sur un dossier pour y lancer PowerGREP
- utiliser des expressions régulières ou du texte littéral
- spécifiez des caractères génériques pour fichiers à inclure et exclure
- rechercher et remplacer
- le mode Aperçu est agréable parce que vous pouvez vous assurer que vous remplacez ce que vous avez l'intention de.
Maintenant, je me rends compte que les autres outils grep peuvent faire tout ce qui précède. C'est juste que PowerGREP empaquette toutes les fonctionnalités dans une interface graphique très facile à utiliser.
des mêmes gens merveilleux qui vous ont apporté RegexBuddy et avec qui je n'ai aucune affiliation au-delà d'aimer leurs affaires. (Il devrait notez que RegexBuddy inclut une version de base de grep (pour Windows) lui-même et cela coûte beaucoup moins cher que PowerGREP.)
Solutions supplémentaires
Commandes Windows existantes
- FINDSTR
- Select-String dans PowerShell
Implémentations de commandes Linux sous Windows
Outils Grep avec un graphique interface
Outils Grep supplémentaires
FINDSTR est assez puissant, supporte Les expressions régulières et a les avantages d'être déjà 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 rechercher de manière récursive findstr /s text_to_find *
GrepWin Libre et open source (GPL)
J'ai utilisé grepWin qui a été écrit par l'un des gars de tortoisesvn. Fait le travail sur Windows...
Mise À Jour Juillet 2013:
Un Autre outil grep maintenant j'utilise tout le temps sur Windows AstroGrep:
Sa capacité à me montrer plus que la simple recherche de ligne (c'est-à-dire le --context=NUM d'un grep de ligne de commande) est inestimable.
Et il est rapide. Très rapide, même sur un vieil ordinateur avec non - SSD Lecteur (je sais, ILS l'habitude de faire ce disque dur avecspinning disques, appelés plateaux , Droit fou?)
C'est gratuit.
Il est portable (archive zip simple à décompresser).
Réponse originale octobre 2008
Gnu Grep est 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', à partir de GnuWin32), et vous pouvez vraiment écrire 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" *
L'applet de commande Select-String de PowerShell était bien 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 d'abord installer 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: ce 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-v o
- - Encoding: pour spécifier l'encodage des caractères
Je trouve opportun de créer une fonction gcir
pour Get-ChildItem -Recurse .
, avec des astuces pour passer correctement les paramètres, et un alias ss
pour Select-String
. Donc, vous une écriture:
Gcir *.txt / ss foo
Il peut ne pas tomber exactement dans la catégorie' grep' , mais je ne pouvais pas m'en sortir sous Windows sans un utilitaire appelé AgentRansack . C'est un utilitaire "find in files" basé sur l'interface graphique avec le support de regex. Il est mort simple de faire un clic droit sur un dossier, cliquez sur " ransack.."et trouver des fichiers contenant ce que vous cherchez. Extrêmement rapide.
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 a une interface simple. Je l'utilise pour rechercher du code tout le temps.
PowerShell a été mentionné à quelques reprises. Voici comment vous l'utiliseriez réellement de manière grepish:
Get-ChildItem -recurse -include *.txt | Select-String -CaseSensitive "SomeString"
Il recherche récursivement tous les fichiers texte dans l'arborescence de répertoires en cours pour SomeString
avec une sensibilité à la casse.
Encore mieux, exécutez ceci:
function pgrep { param([string]$search, [string]$inc) Get-ChildItem -recurse -include $inc | Select-String -CaseSensitive $search }
Alors faites:
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 d'outils de ligne de commande appropriés.
Cygwin comprend grep. Tous les outils GNU AMD Unix stuff fonctionne très bien sur Windows si vous installez Cygwin.
Ack fonctionne bien sur Windows (si vous avez Perl). Je trouve mieux que grep pour de nombreuses utilisations.
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, puis votre cmd.exe a des fonctionnalités Linux de base!
DnGREP est un outil grep open source pour Windows. Il prend en charge un certain nombre de fonctionnalités intéressantes, y compris:
- Annuler pour remplacer
- possibilité de rechercher par un clic droit sur le dossier dans l'Explorateur
- Options de recherche avancées telles que la recherche phonétique et xpath
- Recherche dans les fichiers PDF, les archives et les documents Word
IMHO, il a une interface agréable et propre aussi:)
Eh bien, à côté du port Windows du GNU grep à:
http://gnuwin32.sourceforge.net/
Il y a aussi le GREP de Borland (très similaire à GNU one) disponible dans le compilateur C++ gratuit de Borland (c'est un freeware avec des outils de ligne de commande).
J'ai utilisé avec succès GNU utilities pour Win32 pendant un certain temps et il a un bon grep ainsi que tail et d'autres utilitaires gnu pratiques pour win32. J'évite le shell emballé et utilise simplement les exécutables directement dans l'invite de commande win32.
La queue qui est emballée est également une bonne petite application.
Je suis l'auteur de Aba de Recherche et de remplacement. tout comme PowerGREP, il prend en charge les expressions régulières, l'enregistrement des motifs pour une utilisation ultérieure, l'annulation pour les remplacements, l'Aperçu avec la surbrillance syntaxique 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 serai heureux de répondre à toutes les questions.
Je voulais un outil grep gratuit pour Windows qui vous permettait de cliquer avec le bouton droit sur un dossier et de faire une recherche regex de chaque fichier-sans écran nag.
Ce qui suit est une solution rapide basée sur le findstr
mentionné dans un post précédent.
Créez un fichier texte quelque part sur votre disque dur où vous conservez des outils de longue durée. Renommer .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"
Ensuite, naviguez jusqu'au dossier SendTo. Sous Windows 7 accédez à %APPDATA%\Microsoft\Windows\SendTo
et faites glisser un raccourci de le fichier batch dans ce dossier SendTo.
J'ai renommé le raccourci 1 GREP
pour le garder en haut de l'Envoyer à la liste.
Les choses que je voudrais faire ensuite avec ceci sont de diriger la sortie de findstr
à travers quelque chose qui générerait un fichier html afin que vous puissiez cliquer sur chaque ligne de sortie pour ouvrir ce fichier. En outre, Je ne pense pas que cela fonctionne avec des raccourcis vers des dossiers. Je devrais inspecter le paramètre et voir s'il contient ".lnk".
J'ai utilisé le GREP de Borland pendant des années mais je viens de trouver un motif qui ne correspondra pas. Eeeks. Qu'est-ce qu'il n'a pas trouvé d'autre au fil des ans? J'ai écrit un simple remplacement de recherche de texte qui fait la récursivité comme grep-C'est 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]
Mon outil de choix est le nom approprié Windows Grep :
- Belle interface graphique simple
- prend en charge la recherche et le remplacement
- peut afficher les lignes autour des lignes trouvées
- peut rechercher dans des colonnes dans des fichiers CSV et des fichiers à Largeur fixe
Si vous voulez un outil simple à utiliser Windows Grep, j'ai créé un appelé P-Grep que j'ai mis à disposition pour téléchargement gratuit à partir de 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, donc j'ai é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 daté lors de l'installation.
La chaîne select de PowerShell est similaire, ce ne sont pas les mêmes options et la même sémantique, mais elle est toujours puissante.
J'utilise AJC Grep tous les jours 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 qu'ils s'arrêtent quand ils en rencontrent un, plutôt que de simplement émettre un avertissement. C'est ennuyeux mais cela n'arrive pas très souvent.
Je l'utilise sur Windows 7 Ultimate 64 bits, donc ses informations d'identification 64 bits sont correctes.
Je l'utilise depuis toujours et heureusement, il est toujours disponible. C'est super rapide et très petit.
Si aucune des solutions n'est tout à fait ce que vous cherchez, peut-être pourriez-vous écrire un wrapper à FindStr qui fait exactement ce dont vous avez besoin?
FindStr est assez bon de toute façon, il devrait juste frapper une interface graphique (si vous le voulez) et fournir quelques fonctionnalités supplémentaires (comme le combiner avec Find pour trouver le nombre de fichiers qui contiennent une chaîne spécifiée [mentionné ci-dessus]).
Ceci, bien sûr, suppose que vous avez l'exigence, le temps et l'envie de le faire!
J'ai Cygwin installé sur ma machine et mis le répertoire Cygwin bin dans mon chemin environnemental, donc le Cygwin grep fonctionne comme d'habitude dans une ligne de commande qui résout tous mes besoins de script pour grep en ce moment.