2009-09-12 7 views

Répondre

9

J'ai également trouvé une autre façon d'utiliser la fonctionnalité de type GREP dans Windows 7 et plus sans aucune application supplémentaire à installer et sur les systèmes plus anciens, vous pouvez utiliser installer Powershell.

Dans Powershell, l'utilisateur peut utiliser Where-Object il a un ensemble assez complet de fonctionnalités qui fournit toutes les fonctionnalités de GREP plus plus.

Espoir Ça aide.

0

Si vous installez Cygwin ou Mingw, alors oui.

Sinon, pas autant que je sache.

32

Grep for Windows by GnuWin Project (2014-10-02: Il est pas à jour, voir les commentaires ci-dessous)

+1

Ceci est le grep GnuWin32.Il n'a pas été mis à jour avec la dernière version de grep. Pour cela, vous devrez obtenir la version Cygwin. Voir le commentaire ci-dessous. – JPaget

+5

-1 pour la réponse à la liaison uniquement. – Travis

+0

Mais busybox est en cours de développement ... http://stackoverflow.com/a/22634389/1498669 – Bernhard

176

Il est un outil de ligne de commande appelé FINDSTR qui vient avec tous les systèmes d'exploitation Windows NT classe (type FINDSTR /? dans une fenêtre d'invite de commande pour plus d'informations) Il ne supporte pas tout grep mais cela pourrait suffire à vos besoins.

+5

Merci! Ce n'est pas grep, mais j'aime pouvoir fonctionner sans installer de logiciel supplémentaire sur les machines des autres et cela me le permettra. – sage

+23

Vous pouvez également l'utiliser avec le symbole de tuyau, par ex. 'netstat -n | FINDSTR 3389' – harperville

+3

@sage, avec un peu de créativité, ** findstr ** fonctionne exactement comme grep. Reportez-vous à cet exemple [grep for Windows] (http://www.mkyong.com/linux/grep-for-windows-findstr-example/). – mkyong

31

PowerShell (fourni en standard sur Windows 7/2008R2, en option pour XP/2003/Vista/2008) qui inclut la cmdlet select-string à cet effet.

+9

Alors que Select-String (alias: sls) utilise des expressions régulières, il ne prend pas en charge certaines fonctionnalités de base telles que la récursivité d'annuaire. Pour cela, vous devez combiner plusieurs commandes PowerShell. Comme "dir -R -Include * .txt | sls"^Mon Regex String $ " – yzorg

3

UnxUtils est un excellent ensemble d'utilitaires Unix fonctionnant sous Windows. Il a grep, sed, gawk, etc.

+3

UnnuUtils n'a pas été maintenu depuis des années.GnuWin32 ou Cygwin à la place – JPaget

+0

gnu sur windows (gow) est plus complète que GnuWin32: https: //github.com/bmatzelle/gow/wiki/ –

0

Si cela ne vous dérange pas un produit payant, PowerGREP est mon favori personnel.

0

Nous avons récemment utilisé PowerGREP pour des opérations en masse relativement avancées sur des milliers de fichiers. Y compris regex recherche dans le contenu des fichiers PDF, et la modification de documents PDF à grande échelle.

Cela vaut l'argent si vous voulez gagner du temps de travail manuel. Vous pouvez l'essayer avant d'acheter je pense.

8

Cygwin grep et plus;)

+2

Vous n'avez pas besoin d'installer tout le paquet Cygwin pour exécuter le grep Cygwin.Vous avez juste besoin d'environ 5 DLL: cygpcre-0.dll, cygpcreposix-0.dll, cygwin1. dll, cygintl-8.dll, et cyggce_s-1.dll – JPaget

0

Si vous devez utiliser nu Windows, en plus de l'option Powershell mentionné ci-dessus, vous pouvez utiliser VBScript, qui a le soutien de RegEx décent. MS a également une zone de script décent sur Technet avec une tonne d'exemples pour les administrateurs.

9

Je suis surpris que personne n'ait mentionné FINDSTR. Je ne suis pas un utilisateur powerp grep, mais findstr fait ce dont j'ai besoin pour filtrer les fichiers et stdin, avec un support de regex primitif. Expédié avec Windows et tout ça. (Edit: Eh bien quelqu'un a mentionné findstr, il est tard, je suppose)

+3

"personne n'a mentionné FINDSTR" - la "meilleure" réponse a un an de plus et mentionne FINDSTR ... – chiccodoro

6

GnuWin32 est utile de mentionner, il fournit la version Win32 native de tous les outils Linux standards, y compris grep, fichier, sed, groff, tiret, etc.

Et il est constamment mis à jour lorsque de nouvelles versions de ces outils sont publiées.

+0

Il semble maintenant être disponible sur choclatey, donc _cinst GnuWin32_ fonctionne pour l'installer rapidement –

2

Dans le reskit Windows, il existe un utilitaire appelé "qgrep". Vous l'avez peut-être déjà sur votre boîte. ;-) Il vient aussi avec la commande "queue", dieu merci!

0

Bien que techniquement pas grep ni ligne de commande, Microsoft Visual Studio et Notepad++ ont une très bonne fonctionnalité de recherche dans les fichiers avec le support d'expression régulière complète. Je me retrouve à les utiliser fréquemment même si j'ai aussi la version CygWin de grep disponible sur la ligne de commande.

0

Essayez simplement l'utilitaire LikeGrep java. Il peut vous aider dans de très nombreux cas. Comme vous le souhaitez, il peut également remplacer du texte, trouvé dans les fichiers. Il garantit son travail sur des fichiers volumineux (jusqu'à 8 Go testés)

0

Comme mentionné ci-dessus, le projet gnuwin32 dispose d'une version Windows CLI de grep.

Si vous voulez quelque chose avec une interface graphique, je recommanderais l'outil (open-source) AstroGrep.

0

Cela fait un moment que je les ai utilisés, mais Borland (Embarcadero maintenant) a inclus une ligne de commande grep avec leur compilateur C/C++. Depuis un certain temps, ils ont mis à disposition leur version 5.5 en tant que free download après s'être enregistré.

1

J'ajouterai $ 0.02 à ce sujet. dnGREP est un excellent outil de grep open source pour Windows qui prend en charge l'annulation, l'intégration Windows Explorer, la recherche dans les PDF, les zips, les DOC et plein d'autres choses ...

3

Un excellent et très rapide utilitaire de recherche de fichiers, Agent Ransack, prend en charge la recherche d'expressions régulières. Il s'agit principalement d'un utilitaire graphique, mais une interface de ligne de commande est également disponible.

15

comme mentionné, findstr fonctionne bien. exemple:

C:> dir | findstr de Windows

11.06.2013 21:55 de Windows

3

Sous Windows J'utilise Far Manager pour la recherche de fichiers. BSD sous licence, fonctionne en console, économise du temps sur la saisie des paramètres cmdline. Voici sa boîte de dialogue de recherche invoquée par Alt-F7.Alt-F7

0

Je recommande PowerGrep

je devais faire un projet e-découverte il y a plusieurs années. Je trouve que fisdstr avait des limites, surtout fisdstr allaient faire faillite

le script a dû effectuer des recherches dans des milliers de fichiers en utilisant deux termes de recherche douzaine/phrases.

grep de Cygwin travaillé beaucoup mieux, il n'a pas étouffer souvent, mais finalement je suis allé à PowerGrep car l'interface graphique fait beaucoup plus facile de dire quand et où il est écrasé, et aussi il était vraiment facile à modifier dans tous les conditionnels et la sortie que je voulais. En fin de compte PowerGrep était le plus fiable des trois.

0

Oui, il n'y a qu'un seul programme pour PC Windows qui a une interface graphique solide et c'est un utilitaire essentiel pour moi. Je travaille en tant que développeur et sur chaque ordinateur que j'ai eu, installez le programme XFind. Il est créé en 1997 et jusqu'à maintenant la version est 1.0 et fonctionne jusqu'à maintenant et c'est le meilleur. J'ai souvent besoin de rechercher une chaîne dans un ".cs", " .aspx", ".sct" (fichier de code de formulaire Visual FoxPro) ou simplement ". *" Et XFind analyse tous les fichiers et affiche les fichiers et Une autre bonne chose est que vous pouvez regarder où la chaîne est dans le fichier. XFind a aussi une sorte d'éditeur. Si c'est un fichier binaire, il vous montrera la chaîne trouvée. Essayez-le et utilisez-le pour toujours si vous êtes développeur comme moi.

1

Vous avez évidemment reçu beaucoup de recommandations différentes.
Mon choix personnel pour un libre, 3rd Party Utility est: Agent Ransack
Agent Ransack Download
Malgré son nom quelque peu déroutant, il fonctionne bien et peut être utilisé dans une variété de façons de trouver des fichiers.

Bonne chance

0

Je sais que c'est un peu vieux sujet, mais, est une autre chose ici que vous pouvez faire. Je travaille sur une VM de développeur sans accès à Internet et avec un espace disque libre assez limité, j'ai donc utilisé le Java installé dessus.

Compilez un petit programme Java qui imprime des correspondances regex avec la console. Placez le pot quelque part sur votre système, créez un lot pour l'exécuter et ajoutez le dossier à votre variable PATH:

JGrep.java:

package com.jgrep; 

import java.io.BufferedReader; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.IOException; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class JGrep { 

    public static void main(String[] args) throws FileNotFoundException, IOException { 
     int printGroup = -1; 
     if (args.length < 2) { 
      System.out.println("Invalid arguments. Usage:"); 
      System.out.println("jgrep [...-MODIFIERS] [PATTERN] [FILENAME]"); 
      System.out.println("Available modifiers:"); 
      System.out.println(" -printGroup   - will print the given group only instead of the whole match. Eg: -printGroup=1"); 
      System.out.println("Current arguments:"); 
      for (int i = 0; i < args.length; i++) { 
       System.out.println("args[" + i + "]=" + args[i]); 
      } 
      return; 
     } 
     Pattern pattern = null; 
     String filename = args[args.length - 1]; 
     String patternArg = args[args.length - 2];   
     pattern = Pattern.compile(patternArg); 

     int argCount = 2; 
     while (args.length - argCount - 1 >= 0) { 
      String arg = args[args.length - argCount - 1]; 
      argCount++; 
      if (arg.startsWith("-printGroup=")) { 
       printGroup = Integer.parseInt(arg.substring("-printGroup=".length())); 
      } 
     } 
     StringBuilder sb = new StringBuilder(); 
     try (BufferedReader br = new BufferedReader(new FileReader(filename))) { 
      sb = new StringBuilder(); 
      String line = br.readLine(); 

      while (line != null) { 
       sb.append(line); 
       sb.append(System.lineSeparator()); 
       line = br.readLine(); 
      } 
     } 
     Matcher matcher = pattern.matcher(sb.toString()); 
     int matchesCount = 0; 
     while (matcher.find()) { 
      if (printGroup > 0) { 
       System.out.println(matcher.group(printGroup)); 
      } else { 
       System.out.println(matcher.group()); 
      } 
      matchesCount++; 
     } 
     System.out.println("----------------------------------------"); 
     System.out.println("File: " + filename); 
     System.out.println("Pattern: " + pattern.pattern()); 
     System.out.println("PrintGroup: " + printGroup); 
     System.out.println("Matches: " + matchesCount); 
    } 
} 

c: \ jgrep \ jgrep.bat (avec jgrep.jar):

@echo off 
java -cp c:\jgrep\jgrep.jar com.jgrep.JGrep %* 

et ajouter c: \ jgrep à la fin de la variable d'environnement PATH.

Appelez maintenant jgrep "expression" file.txt depuis n'importe où.

J'avais besoin d'imprimer des groupes spécifiques à partir de mon expression, j'ai donc ajouté un modificateur et je l'ai appelé comme jgrep -printGroup=1 "expression" file.txt.