it-swarm.com.de

Gibt es ein Pattern Matching Utility wie GREP in Windows?

Gibt es ein ähnliches Dienstprogramm wie grep in der Windows-Eingabeaufforderung oder gibt es ein Drittanbieter-Tool dafür?

152
Chintan Shah

Ich habe auch eine weitere Möglichkeit gefunden, GREP-ähnliche Funktionen in Windows 7 und höher zu nutzen, ohne dass eine zusätzliche Anwendung installiert werden muss. Auf älteren Systemen können Sie Powershell installieren.

In Powershell kann der Benutzer Where-Object verwenden. Es verfügt über umfangreiche Funktionen, die alle Funktionen von GREP und mehr bieten.

Ich hoffe es hilft. 

11
Chintan Shah

Es gibt ein Befehlszeilenprogramm namens FINDSTR, das mit allen Windows NT-Betriebssystemen geliefert wird (geben Sie FINDSTR /? in ein Eingabeaufforderungsfenster ein, um weitere Informationen zu erhalten). Es unterstützt nicht alles grep, kann jedoch für Ihre Anforderungen ausreichend sein.

215
Ken Keenan

Grep für Windows von GnuWin Project (2014-10-02: Es ist veraltet, siehe Kommentare unten)

32
Gregor

PowerShell (standardmäßig in Windows 7/2008R2 enthalten, optional für XP/2003/Vista/2008). Hierzu gehört das Cmdlet select-string.

32
Richard

wie gesagt funktioniert Findstr gut. Beispiel: 

C:> dir | findstr Windows

11.06.2013 09:55 PM Windows

24

Ich bin überrascht, dass niemand FINDSTR erwähnt hat. Ich bin kein Grep-Poweruser, aber findstr macht, wozu ich es brauche, filtert Dateien und stdin mit etwas primitiver Regex-Unterstützung. Versendet mit Windows und so weiter. (Edit: Nun, jemand hat findstr erwähnt, es ist spät, denke ich)

11
Svend

Cygwin grep und mehr;)

9
sdu

GnuWin32 ist erwähnenswert, es bietet die native Win32-Version aller Standard-Linux-Tools, einschließlich grep, file, sed, groff, indent usw.

Und es wird ständig aktualisiert, wenn neue Versionen dieser Tools veröffentlicht werden.

6
Diaa Sami

Unter Windows benutze ich Far Manager zur Dateisuche. BSD-lizenziert, arbeitet in der Konsole und spart Zeit bei der Eingabe von cmdline-Parametern. Hier ist der Suchdialog von Alt-F7. Alt-F7

4

Update: Dies war nicht richtig, als die Frage ursprünglich gestellt wurde, aber jetzt lässt Microsoft ein Installiere das Windows-Subsystem für Linux und Windows wird dann grep ausführen. Führen Sie in PowerShell Folgendes aus:

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

UnxUtils ist eine großartige Gruppe von Unix-Dienstprogrammen, die unter Windows ausgeführt werden. Es hat grep, sed, gawk usw.

3
Andy White

Agent Ransack , ein hervorragendes und sehr schnelles Dateisuchprogramm, unterstützt die Suche nach regulären Ausdrücken. Es ist in erster Linie ein GUI-Dienstprogramm, es steht jedoch auch eine Befehlszeilenschnittstelle zur Verfügung.

3
JPaget

Im Windows Reskit gibt es ein Dienstprogramm namens "qgrep". Möglicherweise haben Sie es bereits auf Ihrer Box. ;-) Es kommt auch mit dem "Schwanz" -Befehl, Gott sei Dank!

2
Jubal

Microsoft Visual Studio und Notepad ++ haben zwar keine technisch grep oder Kommandozeile, verfügen jedoch über eine sehr gute Funktion zum Suchen in Dateien mit voller Unterstützung für reguläre Ausdrücke. Ich benutze sie häufig, obwohl ich auch die CygWin-Version von grep in der Befehlszeile verfügbar habe.

1
GBegen

Ja, es gibt nur ein Programm für Windows-PCs, das eine solide grafische Benutzeroberfläche hat und für mich unverzichtbar ist. Ich arbeite als Entwickler und auf jedem Computer, den ich hatte, installiere zuerst das XFind-Programm. Es wurde 1997 erstellt und bis jetzt ist Version 1.0 und bis jetzt funktioniert und es ist das Beste. Häufig muss ich einen String in einer " .cs", ". Aspx", " .sct" (Visual FoxPro-Formulardatei) oder einfach ". *" Suchen und XFind durchsucht alle Dateien und Zeigen Sie mir Dateien und eine andere tolle Sache ist, dass Sie sehen können, wo die Zeichenfolge in der Datei ist. XFind hat auch eine Art Editor. Wenn es sich um eine Binärdatei handelt, wird die gefundene Zeichenfolge angezeigt. Probieren Sie es aus und verwenden Sie es für immer, wenn Sie wie ich ein Entwickler sind.

1
Shixx

Ich werde meinem Thread $ 0,02 hinzufügen. dnGREP ist ein großartiges Open Source-Grep-Tool für Windows, das die Rückgängigmachung, die Integration von Windows Explorer, die Suche in PDF-Dateien, Reißverschlüssen, DOCs und eine Reihe anderer Elemente unterstützt.

1
stankovski

Sie haben offensichtlich viele verschiedene Empfehlungen erhalten.
Meine persönliche Entscheidung für ein kostenloses Dienstprogramm von Drittanbietern lautet: Agent Ransack
Agent Ransack Download
Trotz seines etwas verwirrenden Namens funktioniert es gut und kann auf verschiedene Weise zum Suchen von Dateien verwendet werden. 

Viel Glück 

1
Dhugalmac

Es ist schon eine Weile her, seit ich sie benutzt habe, aber Borland (jetzt Embarcadero) enthielt eine Befehlszeile grep mit seinem C/C++ - Compiler. Seit einiger Zeit stellen sie ihre 5.5-Version nach der Registrierung als kostenloser Download zur Verfügung.

0
GreenMatt

Es gibt ein kommerzielles Dienstprogramm für Grep von Oak Road Systems .

0
JPaget

Cygwin verwenden ...

es verfügt über 32- und 64-Bit-Versionen
und es funktioniert gut unter Windows 2000 (*)
auf Windows 10 oder Server 2019

Ich benutze Cygwin für eine lange Zeit ...
und habe kürzlich versucht, durch Windows-Linux-Subsysteme zu ersetzen ...

nicht für lange...
Ich bin schnell wieder zu Cygwin zurückgekehrt ...

viel flexibler, kontrollierbarer und reicher ...
auch weniger aufdringlich ...

füge einfach\bin zum Pfad hinzu ...
und Sie können es in Windows/Batch/Powershell verwenden ...
oder in einer DOS-Box ... oder in einer Powershell-Box ...

Sie können auch eine Menge großartiger Pakete installieren
die wirklich funktionieren ... wie nginX oder PHP ... Ich verwende sogar das Paket Cygwin PHP in meinem IIS ...

Als Bonus können Sie es auch von einer Bash-Shell verwenden ...
(Ich denke das war die ursprüngliche Absicht ;-))

0
ZEE

Bare Grep ist nett, wenn Sie eine GUI wollen. Gnu grep ist gut für CLI

0
Ariel

Wenn Sie kein kostenpflichtiges Produkt mögen, ist PowerGREP mein persönlicher Favorit.

0
David Andres

Probieren Sie einfach das Java-Hilfsprogramm LikeGrep ..__ aus, das Ihnen in vielen Fällen helfen kann. Wenn Sie möchten, kann er auch Text ersetzen, der in Dateien enthalten ist. Er garantiert die Arbeit mit großen Dateien (bis zu 8 GB getestet).

0
Igor

Wir haben kürzlich PowerGREP für einige fortgeschrittene Massenoperationen für Tausende von Dateien verwendet. Einschließlich der Regex-Suche im Inhalt von PDF -Dateien und das Ändern von PDF -Dokumenten in großem Maßstab.

Es ist das Geld wert, wenn Sie Zeit sparen möchten. Sie können es ausprobieren, bevor Sie kaufen, denke ich.

0
Lars Udengaard

Ich weiß, dass es ein altes Thema ist, aber hier können Sie noch etwas tun. Ich arbeite an einem Entwickler VM, der keinen Internetzugang und einen recht begrenzten freien Speicherplatz hat. Daher habe ich Java verwendet, das darauf installiert ist. 

Kompilieren Sie ein kleines Java-Programm, das Regex-Übereinstimmungen auf die Konsole druckt. Platzieren Sie das Glas irgendwo auf Ihrem System, erstellen Sie einen Stapel, um es auszuführen, und fügen Sie den Ordner Ihrer PATH-Variablen hinzu:

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 (zusammen mit jgrep.jar):

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

und fügen Sie c:\jgrep am Ende der Umgebungsvariablen PATH hinzu.

Rufen Sie jetzt einfach jgrep "expression" file.txt von überall auf. 

Ich musste einige spezifische Gruppen aus meinem Ausdruck drucken, also fügte ich einen Modifikator hinzu und nannte ihn jgrep -printGroup=1 "expression" file.txt.

0
mihail

Ich weiß, dass es eine alte Frage ist, aber ich bin auf diesen Beitrag gestoßen und habe nach einer Antwort gesucht. Und ich habe einen gefunden, der es hier für das kollektive Internetgedächtnis hinzufügt

Powershell: Select-String Modul: Microsoft.PowerShell.Utility

https://docs.Microsoft.com/en-us/powershell/module/Microsoft.powershell.utility/select-string

und einen informativen Blogeintrag mit fortgeschrittenen Beispielen: "How to" grep "in PowerShell" https://antjanus.com/blog/web-development-tutorials/how-to-grep-in-powershell/

Ein einfaches Beispiel aus diesem Blogeintrag: Cat package.json | Select-String -Pattern webpackls ./src/components/ | Select-String-Pattern-Ansicht

C:> Katze post.md | Auswahlzeichenfolge -Pattern "^\w *:"

0
blackweta

die all-in-one busybox enthält grep/egrep/sed/awk und viele mehr 

bekomme es von:

oder etwas älter

0
Bernhard

Wie oben erwähnt, verfügt das gnuwin32-Projekt über eine Windows-CLI-Version von grep.

Wenn Sie etwas mit einer grafischen Oberfläche möchten, würde ich das (Open-Source) Tool AstroGrep empfehlen.

0
bta

Wenn Sie blankes Windows verwenden müssen, können Sie zusätzlich zu der oben genannten Powershell-Option VBScript verwenden, das eine anständige RegEx-Unterstützung bietet.

MS hat auch einen anständigen Skriptbereich auf Technet mit einer Vielzahl von Beispielen für Administratoren.

0
Ron Ruble

Ich empfehle PowerGrep

Ich musste vor einigen Jahren ein E-Discovery-Projekt durchführen. Ich habe festgestellt, dass fisdstr einige Einschränkungen hatte, vor allem fisdstr würde schließlich scheitern 

das Skript musste Tausende von Dateien mit ein paar Dutzend Suchbegriffen durchsuchen. 

Cygwins grep funktionierte viel besser, es verschluckte nicht oft, aber letztendlich bin ich zu PowerGrep gegangen, weil die grafische Benutzeroberfläche es viel einfacher macht, zu erkennen, wann und wo es abgestürzt ist, und es war auch sehr einfach zu bearbeiten alle bedingungen und ausgaben, die ich wollte. Letztendlich war PowerGrep der zuverlässigste der drei. 

0
Haggisbreath