Gibt es ein ähnliches Dienstprogramm wie in grep
der Windows-Eingabeaufforderung oder gibt es ein Drittanbieter-Tool dafür?
Gibt es ein ähnliches Dienstprogramm wie in grep
der Windows-Eingabeaufforderung oder gibt es ein Drittanbieter-Tool dafür?
Antworten:
Es gibt ein Befehlszeilentool namens FINDSTR
, das mit allen Betriebssystemen der Windows NT-Klasse geliefert wird (geben Sie es FINDSTR /?
in ein Eingabeaufforderungsfenster ein, um weitere Informationen zu erhalten). Es unterstützt nicht alles, grep
funktioniert jedoch möglicherweise für Ihre Anforderungen.
netstat -n | FINDSTR 3389
PowerShell (standardmäßig in Windows 7 / 2008R2 enthalten, optional für XP / 2003 / Vista / 2008), das das select-string
Cmdlet für diesen Zweck enthält.
Grep für Windows von GnuWin Project (02.10.2014: Es ist veraltet, siehe Kommentare unten)
Wie bereits erwähnt, funktioniert findstr einwandfrei. Beispiel:
C:> dir | findstr Windows
11/06/2013 09:55 PM Windows
Cygwin grep und mehr;)
Ich habe auch eine weitere Möglichkeit gefunden, GREP-ähnliche Funktionen in Windows 7 und höher ohne zusätzliche Anwendung für die Installation zu verwenden. Auf älteren Systemen können Sie Powershell installieren.
In Powershell kann der Benutzer Where-Object verwenden. Es verfügt über umfassende Funktionen, die alle Funktionen von GREP und mehr bieten.
Ich hoffe es hilft.
Ich bin überrascht, dass niemand FINDSTR erwähnt hat . Ich bin kein grep poweruser, aber findstr macht das, was ich brauche, filtert Dateien und stdin mit etwas primitiver Regex-Unterstützung. Wird mit Windows und all dem geliefert. (Edit: Nun, jemand hat findstr erwähnt, es ist spät, denke ich)
GnuWin32 ist erwähnenswert und bietet eine 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.
Unter Windows verwende ich Far Manager für die Dateisuche. BSD lizenziert, arbeitet in der Konsole, spart Zeit bei der Eingabe von cmdline-Parametern. Hier ist der Suchdialog, der von Alt-F7 aufgerufen wird.
Update: Dies stimmte nicht, als die Frage ursprünglich gestellt wurde, aber jetzt lässt Microsoft das Windows-Subsystem für Linux installieren , und Windows führt dann grep aus. Führen Sie in PowerShell Folgendes aus:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
UnxUtils ist eine großartige Sammlung von Unix-Dienstprogrammen, die unter Windows ausgeführt werden. Es hat grep, sed, gawk, etc.
Agent Ransack , ein ausgezeichnetes und sehr schnelles Dienstprogramm zur Dateisuche , unterstützt die Suche nach regulären Ausdrücken. Es ist in erster Linie ein GUI-Dienstprogramm, es ist jedoch auch eine Befehlszeilenschnittstelle verfügbar.
Obwohl weder Microsoft Grep noch die Befehlszeile technisch verfügbar sind, verfügen sowohl Microsoft Visual Studio als auch Notepad ++ über eine sehr gute Funktion zum Suchen in Dateien mit vollständiger Unterstützung für reguläre Ausdrücke. Ich benutze sie häufig, obwohl ich auch die CygWin-Version von grep in der Befehlszeile habe.
Ich werde meine $ 0.02 zu diesem Thread hinzufügen. dnGREP ist ein großartiges Open-Source-Grep-Tool für Windows, das Rückgängigmachen, Windows Explorer-Integration, Suchen in PDFs, Zips, DOCs und vielen anderen Dingen unterstützt ...
Ja, es gibt nur ein Programm für Windows-PCs mit einer soliden Benutzeroberfläche, und es ist für mich von wesentlicher Bedeutung. Ich arbeite als Entwickler und installiere auf jedem Computer, den ich hatte, als erstes das XFind-Programm. Es wurde 1997 erstellt und bis jetzt ist die Version 1.0 und funktioniert bis jetzt und es ist das Beste. Häufig muss ich nach einer Zeichenfolge in " .cs", " .aspx", " .sct" (Visual FoxPro-Formularcodedatei) oder einfach " . *" Suchen, und XFind scannt alle Dateien und zeigt mir Dateien an dass Sie sehen können, wo sich die Zeichenfolge in der Datei befindet. 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 Entwickler wie ich sind.
Sie haben offensichtlich viele verschiedene Empfehlungen erhalten.
Meine persönliche Wahl für ein kostenloses Dienstprogramm eines Drittanbieters ist: Agent Ransack
Agent Ransack Download
Trotz seines etwas verwirrenden Namens funktioniert es gut und kann auf verschiedene Arten zum Auffinden von Dateien verwendet werden.
Viel Glück
Die All-in-One-Busybox enthält grep / egrep / sed / awk und VIELE mehr
Holen Sie es sich von:
Update: nicht mehr verfügbar - oder älter
Wenn Ihnen ein kostenpflichtiges Produkt nichts ausmacht, ist PowerGREP mein persönlicher Favorit.
Wir haben kürzlich PowerGREP für einige ziemlich fortgeschrittene Massenoperationen mit Tausenden von Dateien verwendet. Einschließlich Regex-Suche in den Inhalt von PDF-Dateien und Ändern von PDF-Dokumenten in großem Maßstab.
Es ist das Geld wert, wenn Sie Zeit durch manuelle Arbeit sparen möchten. Sie können es versuchen, bevor Sie kaufen, denke ich.
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 .
Es ist schon eine Weile her, seit ich sie verwendet habe, aber Borland (jetzt Embarcadero) hat einen Befehlszeilen-Grep in ihren C / C ++ - Compiler aufgenommen. Seit einiger Zeit stellen sie ihre 5.5-Version nach der Registrierung als kostenlosen Download zur Verfügung .
Es gibt ein kommerzielles Grep-Dienstprogramm von Oak Road Systems .
Ich empfehle PowerGrep
Ich musste vor einigen Jahren ein E-Discovery-Projekt durchführen. Ich fand, dass fisdstr
es einige Einschränkungen gab, vor allem würde fisdstr irgendwann scheitern
Das Skript musste Tausende von Dateien mit ein paar Dutzend Suchbegriffen / -phrasen durchsuchen.
Cygwins Grep funktionierte viel besser , es drosselte nicht oft, aber letztendlich ging ich zu PowerGrep, weil die grafische Oberfläche es viel einfacher machte zu erkennen, wann und wo es abgestürzt war, und es war auch wirklich einfach, in allen Bedingungen zu bearbeiten und das auszugeben Ich wollte. Letztendlich war PowerGrep der zuverlässigste der drei.
Ich weiß, dass es ein etwas altes Thema ist, aber hier ist eine andere Sache, die Sie tun können. Ich arbeite auf einer Entwickler-VM ohne Internetzugang und mit sehr begrenztem freiem Speicherplatz, daher habe ich das darauf installierte Java verwendet.
Kompilieren Sie ein kleines Java-Programm, das Regex-Übereinstimmungen auf der 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üge c: \ jgrep hinzu am Ende der Umgebungsvariablen PATH .
Jetzt einfach anrufen jgrep "expression" file.txt
von überall an.
Ich musste einige bestimmte Gruppen aus meinem Ausdruck drucken, also fügte ich einen Modifikator hinzu und nannte ihn wie jgrep -printGroup=1 "expression" file.txt
.
Mir ist klar, dass es eine alte Frage ist, aber ich bin auf diesen Beitrag gestoßen, um eine Antwort zu finden. Und ich habe einen gefunden, der ihn 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 ein informativer Blog-Beitrag mit erweiterten Beispielen: "Wie man in PowerShell" grep " https://antjanus.com/blog/web-development-tutorials/how-to-grep-in-powershell/
Ein einfaches Beispiel aus diesem Blog-Beitrag: cat package.json | Select-String -Pattern-Webpack ls ./src/components/ | Select-String-Musteransicht
C:> cat post.md | Select-String -Pattern "^ \ w *:"
Verwenden Sie Cygwin ...
Es hat 32- und 64-Bit-Versionen
und funktioniert einwandfrei von Windows 2000 (*)
bis Windows 10 oder Server 2019
Ich benutze Cygwin schon lange ...
und habe kürzlich versucht, es durch Windows-Linux-Subsysteme zu ersetzen ...
nicht lange ...
Ich ging schnell wieder nach Cygwin zurück ...
viel flexibler, kontrollierbarer und reichhaltiger ...
auch weniger aufdringlich ...
Fügen Sie 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 Cygwin PHP-Paket in meinem IIS ...
Als Bonus kannst du es auch aus einer Bash-Shell verwenden ...
(Ich denke, das war die ursprüngliche Absicht ;-))