Czy istnieje podobne narzędzie, które jest grep
dostępne z wiersza polecenia systemu Windows, czy jest do tego narzędzie strony trzeciej?
Czy istnieje podobne narzędzie, które jest grep
dostępne z wiersza polecenia systemu Windows, czy jest do tego narzędzie strony trzeciej?
Odpowiedzi:
Istnieje narzędzie wiersza polecenia, FINDSTR
które jest dostarczane ze wszystkimi systemami operacyjnymi klasy Windows NT (wpisz FINDSTR /?
więcej informacji w oknie wiersza polecenia). Nie obsługuje wszystkiego grep
, ale może być wystarczające dla twoich potrzeb.
netstat -n | FINDSTR 3389
PowerShell (dołączony jako standard w Windows 7 / 2008R2, opcjonalny dla XP / 2003 / Vista / 2008), który zawiera select-string
do tego celu polecenie cmdlet.
Grep dla Windows autorstwa GnuWin Project (02.10.2014: Jest nieaktualny, zobacz komentarze poniżej)
jak wspomniano, findstr działa dobrze. przykład:
C:> reż | findstr Windows
11/06/2013 21:55 Windows
Cygwin grep i więcej;)
Znalazłem też jeszcze jeden sposób korzystania z funkcjonalności podobnej do GREP w Windows 7 i nowszych bez dodatkowej aplikacji do zainstalowania, a na starszych systemach możesz zainstalować Powershell.
W Powershell użytkownik może korzystać z Where-Object, który ma dość obszerny zestaw funkcji, który zapewnia wszystkie funkcje GREP i więcej.
Mam nadzieję, że to pomoże.
Dziwię się, że nikt nie wspomniał o FINDSTR . Nie jestem grep poweruser, ale findstr robi to, czego potrzebuję, filtruje pliki i stdin, z pewną prymitywną obsługą wyrażeń regularnych. Dostarczane z systemem Windows i tym podobne. (Edytuj: Cóż, ktoś wspomniał o findstr, chyba późno)
GnuWin32 Warto wspomnieć, że zapewnia natywną wersję Win32 wszystkich standardowych narzędzi Linux, w tym pliku, grep, sed, groffa tiret itp
I jest stale aktualizowany, gdy są wypuszczane nowe wersje tych narzędzi.
W Windows używam Far Managera do wyszukiwania plików. BSD na licencji, działa w konsoli, oszczędza czas na wpisywaniu parametrów cmdline. Oto okno wyszukiwania przywołane przez Alt-F7.
Aktualizacja: Nie było to prawdą, kiedy pytanie zostało pierwotnie zadane, ale teraz Microsoft pozwala zainstalować Podsystem Windows dla Linuksa , a następnie Windows uruchomi grep. W PowerShell uruchom:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Doskonałe i bardzo szybkie narzędzie do wyszukiwania plików, Agent Ransack , obsługuje wyszukiwanie wyrażeń regularnych. Jest to przede wszystkim narzędzie GUI, ale dostępny jest również interfejs wiersza polecenia.
Chociaż nie jest to technicznie grep ani wiersz poleceń, zarówno Microsoft Visual Studio, jak i Notepad ++ mają bardzo dobrą funkcję Znajdź w plikach z pełną obsługą wyrażeń regularnych. Często używam ich, mimo że mam również wersję greg CygWin dostępną w wierszu poleceń.
Dodam moje 0,02 $ do tego wątku. dnGREP to świetne narzędzie grep typu open source dla systemu Windows, które obsługuje cofanie, integrację z Eksploratorem Windows, wyszukiwanie w plikach PDF, zamkach, DOC i wiele innych rzeczy ...
Tak, jest tylko jeden program na PC z systemem Windows, który ma solidne GUI i jest to dla mnie niezbędne. Pracuję jako programista i na każdym komputerze, na którym miałem, najpierw zainstaluj program XFind. Został stworzony w 1997 roku i do tej pory wersja 1.0 i do tej pory działa i jest najlepsza. Często muszę wyszukiwać ciąg znaków w plikach „ .cs”, „ .aspx”, „ .sct” (plik kodu formularza programu Visual FoxPro) lub po prostu „ . *”, A XFind skanuje wszystkie pliki i wyświetla pliki, a kolejną wspaniałą rzeczą jest że możesz sprawdzić, gdzie znajduje się łańcuch w pliku. XFind ma również jakiś edytor. Jeśli jest to plik binarny, pokaże znaleziony ciąg znaków. Wypróbuj i używaj go na zawsze, jeśli jesteś programistą takim jak ja.
Oczywiście otrzymałeś wiele różnych rekomendacji.
Mój osobisty wybór bezpłatnego narzędzia innej firmy to: Agent Ransack
Agent Ransack Download
Pomimo nieco mylącej nazwy, działa dobrze i może być używany na wiele sposobów do wyszukiwania plików.
Powodzenia
All-in-one busybox zawiera grep / egrep / sed / awk i WIELE innych
zdobądź to od:
Aktualizacja: nie jest już dostępna - lub niektóre starsze
Jeśli nie masz nic przeciwko płatnemu produktowi, PowerGREP jest moim ulubionym.
Ostatnio użyliśmy PowerGREP do niektórych dość zaawansowanych operacji masowych na tysiącach plików. Obejmuje wyszukiwanie wyrażeń regularnych w treści plików PDF i modyfikowanie dokumentów PDF na dużą skalę.
Warto zaoszczędzić pieniądze, jeśli chcesz zaoszczędzić czas na pracy. Myślę, że możesz spróbować przed zakupem.
Minęło trochę czasu, odkąd ich użyłem, ale Borland (teraz Embarcadero) włączył kompilator C / C ++ do grep wiersza poleceń. Od pewnego czasu udostępniają swoją wersję 5.5 do bezpłatnego pobrania po rejestracji.
Dostępne jest komercyjne narzędzie grep dostępne w Oak Road Systems .
Polecam PowerGrep
Kilka lat temu musiałem wykonać projekt e-discovery. Odkryłem, że fisdstr
ma pewne ograniczenia, w szczególności fisdstr ostatecznie się nie powiedzie
skrypt musiał przeszukiwać tysiące plików przy użyciu kilkudziesięciu wyszukiwanych haseł / fraz.
Grep Cygwina działał znacznie lepiej , nie dusił się często, ale ostatecznie poszedłem do PowerGrep, ponieważ interfejs graficzny znacznie ułatwił określenie, kiedy i gdzie się zawiesił, a także bardzo łatwo było go edytować we wszystkich warunkach warunkowych i wyjściowych, które Chciałem. Ostatecznie PowerGrep był najbardziej niezawodny z tych trzech.
Wiem, że to trochę stary temat, ale tutaj jest kolejna rzecz, którą możesz zrobić. Pracuję na programistycznej maszynie wirtualnej bez dostępu do Internetu i dość ograniczonej ilości wolnego miejsca na dysku, więc skorzystałem z zainstalowanej na niej Java.
Skompiluj mały program Java, który drukuje dopasowania wyrażeń regularnych na konsoli. Umieść słoik gdzieś w systemie, utwórz partię, aby go wykonać i dodaj folder do zmiennej 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 (wraz z jgrep.jar):
@echo off
java -cp c:\jgrep\jgrep.jar com.jgrep.JGrep %*
i dodaj c: \ jgrep na końcu zmiennej środowiskowej PATH.
Teraz wystarczy zadzwonić jgrep "expression" file.txt
z dowolnego miejsca.
Musiałem wydrukować określone grupy z mojego wyrażenia, więc dodałem modyfikator i nazwij go tak jgrep -printGroup=1 "expression" file.txt
.
Zdaję sobie sprawę, że to stare pytanie, ale natknąłem się na ten post, szukając odpowiedzi. Znalazłem jeden, więc dodając go tutaj do zbiorowej pamięci internetowej
Powershell: Select-String Module: Microsoft.PowerShell.Utility
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/select-string
oraz pouczający post na blogu z zaawansowanymi przykładami: „Jak„ grep ”w PowerShell” https://antjanus.com/blog/web-development-tutorials/how-to-grep-in-powershell/
Prosty przykład z tego postu na blogu: cat package.json | Select-String -Pattern webpack ls ./src/components/ | Select-String -Pattern View
C:> cat post.md | Select-String -Pattern "^ \ w *:"
Użyj Cygwin ...
ma wersje 32- i 64-bitowe
i działa dobrze od Windows 2000 (*)
do Windows 10 lub Server 2019
Używam Cygwin od dłuższego czasu ...
a ostatnio próbowałem zastąpić podsystemy Windows-Linux ...
nie na długo ...
szybko wróciłem do Cygwin ...
znacznie bardziej elastyczny, kontrolowany i bogaty ...
również mniej ingerujący ...
po prostu dodaj \ bin do ścieżki ...
i możesz go użyć w systemie Windows / Batch / Powershell ...
lub w DOS-Box ... lub w Powershell-Box ...
Możesz także zainstalować mnóstwo świetnych pakietów,
które naprawdę działają ... jak nginX lub PHP ... Nawet używam pakietu Cygwin PHP w moich IIS ...
Jako bonus możesz go również użyć z powłoki bash ...
(Myślę, że to była pierwotna intencja ;-))