Frage Grep entspricht für Windows 7?


Gibt es eine Eingabeaufforderung? Grep gleichwertig für Windows 7? Das heißt, ich möchte die Ergebnisse eines Befehls herausfiltern:

Bash verwenden:

ls | grep root

Was wäre es von einer Windows-Eingabeaufforderung?


210
2018-06-22 20:51


Ursprung


Verwechseln Sie ms-dos nicht mit der Eingabeaufforderung. + Verwendung von Find und Findstr und sogar Grep, für Windows .. ist sicherlich leicht mit einer schnellen Suche gefunden. Es gibt sogar Tabellen mit äquivalenten Befehlen in Linux und Windows. auch Sie Bash Beispiel ist nicht einmal spezifisch für bash .. nur ich nehme an, * nix OS. - barlop


Antworten:


Findstr klingt wie du willst. Ich benutze es die ganze Zeit als ungefähres Grep-Äquivalent auf der Windows-Plattform.

Ein anderes Beispiel mit Pfeifen:

C:\> dir /B | findstr /R /C:"[mp]"

253
2018-06-22 21:00



Ja, das scheint das zu sein, wonach ich suche. Ich verstehe, dass es wahrscheinlich Einschränkungen gibt. Ich werde es versuchen. - chrisjlee
Warum konnten sie es nicht einfach Grep nennen? - Victor Grazi
@VictorGrazi Sie haben tatsächlich zuerst gesehen Dieser Artikel. Es hieß ursprünglich qgrep - wurde später umbenannt. - Zitrax
Das große Problem mit findstr ist, dass das Regex-Muster möglicherweise keine Alternativen enthält. - Wolf
Die Frage betrifft Windows 7, aber welche anderen Versionen von Windows haben findstr standardmäßig? Seit Windows XP? - Peter Mortensen


Es gibt mehrere Möglichkeiten:

  • Verwenden Sie einen Port eines Unix grep Befehl. Es gibt mehrere Möglichkeiten. Oft genannt sind GNUWin32, Cygwin, und unxutils. Weniger bekannt, aber in mancher Hinsicht besser, sind die Werkzeuge in der SFUA Utility Toolkit, die in der laufen Subsystem für UNIX-basierte Anwendungen Das kommt direkt in der Box mit Windows 7 Ultimate Edition und Windows Server 2008 R2. (Für Windows XP kann man herunterladen und installieren Dienste für UNIX Version 3.5.) Dieses Toolkit verfügt über eine große Anzahl von Kommandozeilen-TUI-Tools, von mv und du, durch die Korn- und C-Schalen, zu perl und awk. Es kommt in beiden x86-64 und IA64 Aromen sowie x86-32. Die Programme laufen in der nativen korrekten POSIX-Umgebung von Windows statt mit Emulator-DLLs (wie z cygwin1.dll) Schichten über Win32. Und ja, das Toolkit hat grepsowie rund 300 andere.
  • Verwenden Sie eines der vielen nativen Win32 grep Befehle, die Leute geschrieben und veröffentlicht haben.  Tim Charron hat eine native Win32-Version eines modifizierten GNU-Grep, beispielsweise. Es gibt auch PowerGREP, Nackter Grep, grepWin, AstroGrep, und dnGrep, obwohl das alles GUI-Programme sind, die TUI nicht programmiert.
  • Verwenden Sie das mitgelieferte find und findstr.  Die Syntax unterscheidet sich von der grepBeachten Sie, wie die reguläre Ausdrucksfähigkeit ist.

40
2018-06-23 13:06



Cygwin hat für mich auf Win 7 gut funktioniert. Ich brauchte Grep und GnuWin32 Grep hat nicht für mich funktioniert. - Kozuch
Sie schreiben Ich sehe Perl nicht in SUA C: \ Windows \ SUA> Verzeichnis perl * / s / b Datei nicht gefunden und z. c Shell von SUA Ich sehe es nicht in / bin - barlop
Sie schreiben auch, dass SFUA in mancher Hinsicht besser ist. Auf welche Weise? - barlop
@ Kozuch es sei denn du sagst wie es nicht geklappt hat, dann ist dein Kommentar nicht sinnvoll - barlop


Ob Power Shell Befehle sind erlaubt, benutzen

PS C:\> Get-ChildItem | Select-String root

oder kurz

PS C:\> ls | sls root

Beachten Sie, dass der Aliasname sls wird erst ab PowerShell Version 3.0 definiert. Sie können einen Alias ​​für weniger Eingaben hinzufügen:

PS C:\> New-Alias sls Select-String

Um den PowerShell-Befehl direkt von cmd auszuführen, verwenden Sie

C:\>powershell -command "ls | select-string root"

17
2018-01-13 13:16



Grep, der Powershell-Weg. communary.net/2014/11/10/grep-the-powershell-way - Charles Burge


In deiner frühen Revision hast du MS-DOS geschrieben, da gibt es nur FIND, Soweit ich weiss. Aber es ist ein altes Betriebssystem, das nicht mehr benutzt wird.

In der Windows NT-Eingabeaufforderung (z. B. Win2K und Win XP und später, also z. B. win7, win10) können Sie verwenden find und findstr und wenn Sie herunterladen GnuWin32 dann grep 

Die grundlegenden Unterschiede sind, dass findstr einige hat Reguläre Ausdrücke Unterstützung. Grep unterstützt am besten reguläre Ausdrücke.

C:\>dir | find "abc"
C:\>dir | find /i "abc"

find /? und findstr /?zeigt Ihnen, was die Schalter tun.

Gnuwin32 hat "Pakete". Wenn Sie GnuWin32 herunterladen, empfehle ich das Coreutils-Paket für eine Reihe von grundlegenden nützlichen Dienstprogrammen, die Sie kennen würden, aber Grep ist nicht in diesem, es ist ein eigenes Paket.

Hinzugefügt

GnuWin32s Grep, das letzte Mal, als ich nachgesehen habe, ist alt. Cygwins Grep ist viel aktueller. Bedenken Sie auch, dass viele Benutzer virtuelle Maschinen anstelle von Windows-Ports von * nix-Befehlen verwenden.


14
2018-06-22 21:00





Wenn Sie lieber verwenden würden grep, eher, als findstrEs gibt eine Single .exe Dateiversion in UnxUtilsalso ist es tragbar und es ist nicht nötig, es zu installieren oder etwas wie Cygwin zu benutzen.


9
2018-06-22 21:07



Dies ist interessant, würde aber die Installation dieses Tools erfordern. - chrisjlee
@Chris: Es gibt keine Installation. Es ist nur ein .zip Datei von .exe Dateien. Der einzige kleine Nachteil ist, dass die Versionen etwas alt sind. - paradroid
Was ist der Nachteil, alt zu sein? Kann Software alt sein? Alle frischen Bytes. - user unknown
GnuWin32 bietet auch grep für Windows: gnuwin32.sourceforge.net/packages/grep.htm - LiuYan 刘研
@userunknown gut, als Beispiel, der Befehl unxutils sed ist älter und unterstützt nicht \ d z. \ d22 um ein Zitat anzugeben. Ein älteres wget lädt möglicherweise keine neuere Seite herunter, und wenn Sie nach Unterstützung fragen, fragen Sie möglicherweise, ob Sie die neueste erhalten, da dies einige Probleme lösen kann. Ein wirklich alter Grep wird zweifellos nicht die Ebene der Regex-Unterstützung haben, die ein aktueller hat - barlop


Sie können versuchen, zu installieren Schoko unter Windows und installieren Sie das Gähnen Werkzeug. Dies wird Ihnen zur Verfügung stellen grep unter Windows.

Gow steht für GNU unter Windows. Es bietet Unix-Befehlszeilenprogramme unter Windows.


3
2017-09-11 05:33



Es ist ein Paketmanager, wie ein apt-get, aber für Windows. Es hat seinen Namen, weil der Entwickler von NuGet, einem Paketmanager für Visual Studio, abstammt, und das klingt nach Nugget (wie in Chicken Nugget), also dachte er, er wäre "witzig" oder "clever" und würde anrufen sein Programm Chocolatey NuGet. Ich habe das in einem Podcast gehört, der ihn interviewt hat. Gow kann auch unabhängig heruntergeladen werden - barlop
Ich bin neu in Gow, nach einigen Tagen der Nutzung kann ich bezeugen, dass ich es sehr mag - es ist besser als alle älteren Ports von UNIX-Utils, die ich zuvor benutzt hatte. - Radim Cernej
@RadimCernej Ihr Kommentar ist nicht nützlich, wenn Sie nicht angeben Wie Du denkst es ist besser. - barlop
@ Barlop: Seit ich meinen Jan-2016-Kommentar geschrieben habe, bin ich nach und nach auf Gow umgestiegen. Bis jetzt keine Bugs, es hat alle Utilities, die ich brauche / benutze, Pfad wird im Microsoft-Format ausgegeben (was es einfach macht, in andere Programme zu kopieren / einzufügen). Gow ist nicht invasiv genug (einfach zu installieren und zu entfernen), ich empfehle dringend, dass Sie es testen. - Radim Cernej


Bash verwenden

$ ls | grep root

Cmd verwenden

> dir /b | findstr root

woher /b steht für bsind eine Liste von Verzeichnissen und Dateien


2
2018-05-02 05:47



Dies dupliziert eine andere Antwort und fügt keinen neuen Inhalt hinzu. Bitte posten Sie keine Antwort, es sei denn, Sie haben etwas Neues beizutragen. - DavidPostill♦
@DavidPostill: Dies ist eine schnelle Lösung für "TL; DR" Benutzer (wie ich) - vladkras
Das ist keine Entschuldigung dafür, eine Antwort hinzuzufügen, die nichts Neues bringt. In jedem Fall wird die angenommene Antwort immer zuerst angezeigt, so dass sie vor Ihrer gelesen wird. - DavidPostill♦
@DavidPostill, stört es nicht, aber akzeptierte Antwort enthalten mehrere übermäßige und unerklärt Schlüssel /B, /R und /C OP fragte nicht nach, während meine Antwort gibt genau gleichwertig - vladkras
Das /b ist es, das zu machen dir Ausgabe gleich wie die ls Ausgabe. Wenn Sie es testen, werden Sie den Unterschied sehen. Es ist also nicht das genaue Äquivalent. - DavidPostill♦