Existe-t-il un utilitaire similaire grep
disponible à partir de l'invite de commande Windows, ou existe-t-il un outil tiers pour cela?
Existe-t-il un utilitaire similaire grep
disponible à partir de l'invite de commande Windows, ou existe-t-il un outil tiers pour cela?
Réponses:
Il existe un outil de ligne de commande appelé FINDSTR
qui est fourni avec tous les systèmes d'exploitation de classe Windows NT (tapez FINDSTR /?
dans une fenêtre d'invite de commandes pour plus d'informations). Il ne prend pas en charge tout ce que grep
fait mais cela peut être suffisant pour vos besoins.
netstat -n | FINDSTR 3389
PowerShell (inclus en standard sur Windows 7 / 2008R2, facultatif pour XP / 2003 / Vista / 2008) qui inclut l' select-string
applet de commande à cet effet.
Grep pour Windows par GnuWin Project (02/10/2014: il est obsolète, voir les commentaires ci-dessous)
comme mentionné, findstr fonctionne très bien. exemple :
C:> dir | findstr Windows
06/11/2013 à 21h55 Windows
Cygwin grep et plus;)
J'ai également trouvé un autre moyen d'utiliser les fonctionnalités de type GREP dans Windows 7 et supérieur 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 dispose d'un ensemble assez complet de fonctionnalités qui fournit toutes les fonctionnalités de GREP et plus encore.
J'espère que ça aide.
Je suis surpris que personne n'ait mentionné FINDSTR . Je ne suis pas un poweruser grep, mais findstr fait ce dont j'ai besoin, filtrer les fichiers et stdin, avec un support regex primitif. Livré avec Windows et tout ça. (Edit: Eh bien, quelqu'un a mentionné findstr, il est tard je suppose)
GnuWin32 mérite d'être mentionné, il fournit une version Win32 native de tous les outils Linux standard, y compris grep, file, sed, groff, indent, etc.
Et il est constamment mis à jour lorsque de nouvelles versions de ces outils sont publiées.
Sous Windows, j'utilise Far Manager pour la recherche de fichiers. Licence BSD, fonctionne dans la console, permet de gagner du temps lors de la saisie des paramètres cmdline. Voici sa boîte de dialogue de recherche invoquée par Alt-F7.
Mise à jour: ce n'était pas vrai lorsque la question a été posée à l'origine, mais maintenant Microsoft permet d' installer 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
UnxUtils est un excellent ensemble d'utilitaires Unix qui fonctionnent sous Windows. Il a grep, sed, gawk, etc.
Un excellent utilitaire de recherche de fichiers très rapide, Agent Ransack , prend en charge la recherche d'expression régulière. Il s'agit principalement d'un utilitaire GUI, mais une interface de ligne de commande est également disponible.
Bien que techniquement pas grep ni ligne de commande, Microsoft Visual Studio et Notepad ++ ont tous deux une très bonne fonctionnalité de recherche dans les fichiers avec une prise en charge complète des expressions régulières. Je me retrouve à les utiliser fréquemment même si j'ai également la version CygWin de grep disponible sur la ligne de commande.
J'ajouterai mon 0,02 $ à ce fil. dnGREP est un excellent outil grep open source pour Windows qui prend en charge l'annulation, l'intégration de l'explorateur Windows, la recherche dans les PDF, les zips, les DOC et un tas d'autres choses ...
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 tous les ordinateurs que j'ai, installez d'abord le programme XFind. Il a été créé en 1997 et jusqu'à présent la version est 1.0 et jusqu'à présent fonctionne et c'est le meilleur. Souvent, j'ai besoin de rechercher une chaîne dans un " .cs", " .aspx", " .sct" (fichier de code de formulaire Visual FoxPro) ou simplement " . *" Et XFind scanne tous les fichiers et me montre des fichiers et une autre grande chose est que vous pouvez regarder où se trouve la chaîne dans le fichier. XFind a également une sorte d'éditeur. S'il s'agit d'un fichier binaire, il affichera la chaîne trouvée. Essayez-le et utilisez-le pour toujours si vous êtes développeur comme moi.
Vous avez évidemment reçu de nombreuses recommandations différentes.
Mon choix personnel pour un utilitaire tiers gratuit est: Agent Ransack
Téléchargement de l'agent Ransack
Malgré son nom quelque peu déroutant, il fonctionne bien et peut être utilisé de différentes manières pour trouver des fichiers.
Bonne chance
la busybox tout en un contient grep / egrep / sed / awk et BEAUCOUP plus
l'obtenir de:
Mise à jour: plus disponible - ou certains plus anciens
Si un produit payant ne vous dérange pas, PowerGREP est mon préféré.
Nous avons récemment utilisé PowerGREP pour des opérations en masse assez avancées sur des milliers de fichiers. Y compris la recherche de regex dans le contenu des 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.
Si vous devez utiliser Windows nu, en plus de l'option Powershell indiquée ci-dessus, vous pouvez utiliser VBScript, qui prend en charge RegEx décent.
MS a également une zone de script décente sur Technet avec une tonne d'exemples pour les administrateurs.
Cela fait un moment que je ne les ai pas utilisés, mais Borland (Embarcadero maintenant) a inclus un grep en ligne de commande avec leur compilateur C / C ++. Depuis quelque temps, ils mettent à disposition leur version 5.5 en téléchargement gratuit après leur inscription.
Il existe un utilitaire grep commercial disponible chez Oak Road Systems .
Je recommande PowerGrep
J'ai dû faire un projet de découverte électronique il y a plusieurs années. J'ai trouvé que cela fisdstr
avait certaines limites, surtout que fisdstr finirait par échouer
le script devait rechercher dans des milliers de fichiers en utilisant une dizaine de termes / expressions de recherche.
Le grep de Cygwin fonctionnait beaucoup mieux , il ne s'étouffait pas souvent, mais finalement je suis allé à PowerGrep parce que l'interface graphique permettait de dire beaucoup plus facilement quand et où il s'était écrasé, et il était également très facile d'éditer toutes les conditions et de sortir que Je voulais. Finalement, PowerGrep était le plus fiable des trois.
Je sais que c'est un sujet un peu ancien, mais voici une autre chose 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 les correspondances regex sur la console. Placez le 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'ai appelé comme jgrep -printGroup=1 "expression" file.txt
.
Je me rends compte que c'est une vieille question, mais je suis tombé sur ce post à la recherche d'une réponse. Et j'en ai trouvé un alors en l'ajoutant ici pour la mémoire collective Internet
Powershell: Module Select-String: Microsoft.PowerShell.Utility
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/select-string
et un article de blog informatif avec des exemples avancés: «Comment« grep »dans PowerShell» https://antjanus.com/blog/web-development-tutorials/how-to-grep-in-powershell/
Un exemple simple tiré de ce billet de blog: cat package.json | Select-String -Pattern webpack ls ./src/components/ | Select-String -Pattern View
C:> chat post.md | Select-String -Pattern "^ \ w *:"
Utiliser Cygwin ...
il a des versions 32 et 64 bits
et cela fonctionne bien de Windows 2000 (*)
à Windows 10 ou Server 2019
J'utilise Cygwin depuis longtemps ...
et j'ai récemment essayé de le remplacer par Windows-Linux-Subsystems ...
pas pour longtemps ...
je suis rapidement retourné chez Cygwin ...
beaucoup plus flexible, contrôlable et riche ...
aussi moins intrusif ...
ajoutez simplement \ bin au chemin ...
et vous pouvez l'utiliser n'importe quel logiciel sous Windows / Batch / Powershell ...
ou dans une DOS-Box ... ou dans une Powershell-Box ...
Vous pouvez également installer une tonne de packages géniaux
qui fonctionnent vraiment ... comme nginX ou PHP ... J'utilise même le package PHP Cygwin dans mon IIS ...
En prime, vous pouvez également l'utiliser à partir d'un shell bash ...
(je pense que c'était l'intention d'origine ;-))