web-dev-qa-db-fra.com

Existe-t-il un utilitaire de correspondance de modèles tel que GREP dans Windows?

Existe-t-il un utilitaire similaire à grep disponible dans l'invite de commande Windows ou existe-t-il un outil tiers?

152
Chintan Shah

J'ai également trouvé un autre moyen d'utiliser les fonctionnalités de GREP sous Windows 7 et versions ultérieures sans aucune application supplémentaire à installer et sur les systèmes plus anciens, vous pouvez utiliser l'installation de Powershell.

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

J'espère que ça aide. 

11
Chintan Shah

Il existe un outil de ligne de commande appelé FINDSTR fourni avec tous les systèmes d'exploitation Windows NT (saisissez FINDSTR /? dans une fenêtre d'invite de commande pour plus d'informations). Il ne prend pas en charge tout ce que grep prend mais être suffisant pour vos besoins.

215
Ken Keenan

Grep pour Windows par GnuWin Project (2014-10-02: Il est obsolète, voir les commentaires ci-dessous)

32
Gregor

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

32
Richard

comme mentionné, findstr fonctionne très bien. Exemple : 

C:> dir | findstr Windows

11/06/2013 09:55 PM Windows

24
Parallel Universe

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

11
Svend

Cygwin grep et plus;)

9
sdu

GnuWin32 est à noter, il fournit la version Win32 native de tous les outils Linux standards, y compris grep, file, sed, groff, indent, etc.

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

6
Diaa Sami

Sous Windows, j'utilise Far Manager pour la recherche de fichier. Sous licence BSD, fonctionne dans la console et permet de gagner du temps en saisissant les paramètres de commande. Voici sa boîte de dialogue de recherche appelée par Alt-F7. Alt-F7

4
anatoly techtonik

Mise à jour: Ce n'était pas vrai lorsque la question avait été posée à l'origine, mais maintenant, Microsoft permet à un Installez le sous-système Windows pour Linux , et Windows exécutera alors grep. Dans PowerShell, exécutez:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
3
woodvi

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

3
Andy White

Un excellent et très rapide utilitaire de recherche de fichiers, Agent Ransack , prend en charge la recherche par expression régulière. C'est principalement un utilitaire graphique, mais une interface de ligne de commande est également disponible.

3
JPaget

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

2
Jubal

Bien que techniquement ni grep ni la ligne de commande, Microsoft Visual Studio et Notepad ++ possèdent une très bonne fonctionnalité de recherche dans les fichiers avec prise en charge complète des expressions régulières. Je les utilise fréquemment même si la version CygWin de grep est également disponible sur la ligne de commande.

1
GBegen

Oui, il existe un seul programme pour Windows PC qui possède une interface graphique solide et il est essentiel pour moi. Je travaille en tant que développeur et sur chaque ordinateur que j'ai eu, installez d'abord le programme XFind. Il a été créé en 1997 et la version 1.0 est disponible jusqu'à présent. C'est le meilleur. Souvent, je dois rechercher une chaîne dans un " .cs", ". Aspx", " .sct" (fichier de code de formulaire Visual FoxPro) ou simplement ". *" Et XFind analyse tous les fichiers montrez-moi des fichiers et une autre grande 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 un développeur comme moi.

1
Shixx

Je vais ajouter mon 0,02 $ à ce fil. dnGREP est un excellent outil open source grep pour Windows prenant en charge l’annulation, l’intégration de Windows Explorer, la recherche dans les fichiers PDF, les zips, les DOC et de nombreux autres éléments ...

1
stankovski

Vous avez évidemment reçu de nombreuses recommandations différentes.
Mon choix personnel pour un utilitaire tiers gratuit est: Agent Ransack
Téléchargement Agent Ransack
Malgré son nom quelque peu déroutant, il fonctionne bien et peut être utilisé de différentes façons pour trouver des fichiers. 

Bonne chance 

1
Dhugalmac

Cela fait longtemps que je ne les utilise pas, mais Borland (Embarcadero maintenant) a inclus un grep en ligne de commande avec son compilateur C/C++. Depuis quelque temps, ils ont mis à disposition leur version 5.5 en téléchargement gratuit après l’enregistrement.

0
GreenMatt

Un utilitaire commercial grep est disponible à partir de Oak Road Systems .

0
JPaget

Utilisez Cygwin ...

il a des versions 32 et 64 bits
et ça marche très bien à partir de Windows 2000 (*)
vers Windows 10 ou serveur 2019

J'utilise Cygwin depuis longtemps ...
et récemment essayé de remplacer par Windows-Linux-Subsystems ...

pas pour longtemps...
Je suis rapidement retourné chez Cygwin ...

beaucoup plus souple, contrôlable et riche ...
également moins intrusif ...

ajoutez simplement\bin au chemin ...
et vous pouvez l’utiliser avec n’importe quel logiciel Windows/Batch/Powershell ...
ou dans une DOS-Box ... ou dans une Powershell-Box ...

Aussi, vous pouvez installer une tonne d'excellents forfaits
qui fonctionnent vraiment ... comme nginX ou PHP ... J'utilise même le package Cygwin PHP dans mon IIS ...

En prime, vous pouvez également l'utiliser à partir d'une coquille ...
(Je pense que c'était l'intention initiale ;-))

0
ZEE

Bare Grep est agréable si vous voulez une interface graphique. Gnu grep est bon pour la CLI

0
Ariel

Si vous ne craignez pas un produit payé, PowerGREP est mon préféré.

0
David Andres

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

0
Igor

Nous avons récemment utilisé PowerGREP pour des opérations en bloc assez avancées sur des milliers de fichiers. Incluant la recherche régulière dans le contenu de fichiers PDF et la modification de documents PDF à grande échelle.

Cela en vaut la peine si vous voulez gagner du temps sur le travail manuel. Vous pouvez l'essayer avant d'acheter, je pense.

0
Lars Udengaard

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

Compilez un petit programme Java imprimant les correspondances regex sur la console. Placez le fichier jar 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 ajoutez c:\jgrep à la fin de la variable d’environnement PATH.

Maintenant, appelez simplement jgrep "expression" file.txt de n’importe où. 

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

0
mihail

la busybox tout-en-un contient grep/egrep/sed/awk et BOURG plus 

l'obtenir de:

ou un peu plus vieux

0
Bernhard

Comme mentionné ci-dessus, le projet gnuwin32 a une version Windows de la CLI de grep.

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

0
bta

Si vous devez utiliser Windows nu, en plus de l'option Powershell mentionnée ci-dessus, vous pouvez utiliser VBScript, qui prend en charge décemment RegEx.

MS a également une zone de script décente sur Technet avec une tonne d’exemples pour les administrateurs.

0
Ron Ruble

Je recommande PowerGrep

J'ai dû faire un projet de découverte électronique il y a plusieurs années. J'ai trouvé que fisdstr avait quelques limitations, plus particulièrement fisdstr finirait par échouer 

le script devait chercher dans des milliers de fichiers en utilisant une douzaine de termes/expressions de recherche. 

_ {Le grep de Cygwin fonctionnait beaucoup mieux}, il ne s'est pas étouffé souvent, mais je suis finalement allé à PowerGrep parce que l'interface graphique permettait beaucoup plus facilement de savoir quand et où il s'était écrasé et qu'il était très facile de le modifier. toutes les conditions et la sortie que je voulais. En fin de compte, {PowerGrep était le plus fiable} des trois. 

0
Haggisbreath