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?
(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:
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.)
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 *
GrepWin Source libre et open source (GPL)
J'utilise grepWin qui a été écrit par l'un des gars de Tortoisesvn. Est-ce que le travail sur Windows ...
Mise à jour juillet 2013:
Un autre outil grep que j’utilise maintenant tout le temps sous Windows est AstroGrep :
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
Gnu 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" *
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
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.
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.
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.
Cygwin inclut grep. Tous les GNU outils AMD Unix fonctionnent parfaitement sous Windows si vous installez Cygwin.
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!
dnGREP est un outil open source de grep pour Windows. Il prend en charge un certain nombre de fonctionnalités intéressantes, notamment:
À mon humble avis, il a une interface agréable et propre aussi :)
J'utilise toujours WinGREP , mais j'ai eu des problèmes avec le fait de ne pas abandonner les fichiers.
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.
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).
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.
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".
Mon outil de choix est le bien nommé Windows Grep :
nxUtils est celui que j'utilise, fonctionne parfaitement pour moi ...
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]
PowerShell select-string est similaire, ce ne sont pas les mêmes options et la même sémantique, mais cela reste puissant.
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.
Un autre bon choix est MSYS . Il vous donne un tas d'autres utilitaires GNU pour vous permettre d'être plus productif.
Je l'utilise depuis toujours et heureusement, il est toujours disponible. C'est super rapide et très petit.
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.
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.
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!