Windows'da GREP gibi bir Desen Eşleştirme Yardımcı Programı var mı?


179

grepWindows Komut İstemi'nden kullanılabilecek benzer bir yardımcı program var mı veya bunun için üçüncü taraf bir araç var mı?

Yanıtlar:


238

FINDSTRTüm Windows NT sınıfı işletim sistemleri ile birlikte gelen bir komut satırı aracı vardır ( FINDSTR /?daha fazla bilgi için bir Komut İstemi penceresine yazın) Her şeyi desteklemez grep, ancak ihtiyaçlarınız için yeterli olabilir.


7
Teşekkürler! Grep değil, ama diğer insanların makinelerine ek yazılım yüklemeden çalışabilmeyi seviyorum ve bu bana izin verecek.
adaçayı

42
Ayrıca boru sembolü ile de kullanabilirsiniz, örneğinnetstat -n | FINDSTR 3389
harperville

3
@sage, biraz yaratıcılıkla, findstr tam olarak grep gibi çalışır. Windows örneği için bu grep'e bakın .
mkyong

2
@mkyong - Kabul ediyorum. Bunun bir şekilde eksik olduğunu, sadece farklı olduğunu ve daha fazla araç kullanmanın daha fazla çalışma gerektirdiğini söylemek istemedim. Bununla birlikte, findstr şimdi başkalarının bilgisayarlarını kullanırken benim seçim aracımdır, ancak her kullandığımda sözdiziminde belleğimi yenilemek zorundayım.
adaçayı

1
@gonzobrains: Sadece o kadar iyi belgelenmiş değil. Anlayabildiğim kadarıyla, her zaman Windows NT komut isteminden kullanılabilirdi - kesinlikle, Windows NT 4'te mevcuttu, ancak Windows 3.5x hakkında bilmiyorum. Komut istemi Microsoft tarafından böyle bir "ikinci sınıf vatandaş" olarak kabul edildi ve o zamanlar birçok yararlı komut satırı yardımcı programı ☹️
Ken Keenan

35

select-stringBu amaçla cmdlet'i içeren PowerShell (Windows 7 / 2008R2'de standart olarak bulunur, XP / 2003 / Vista / 2008 için isteğe bağlı) .


10
Select-String (diğer ad: sls) normal ifadeler kullanırken, dizin özyineleme gibi bazı temel özellikleri desteklemez. Bunun için birden fazla PowerShell komutunu birleştirmeniz gerekir. "Dir -R -Include * .txt | sls" gibi ^ Regex String'im $ "
yzorg


27

belirtildiği gibi, findstr iyi çalışıyor. misal :

C:> dir | findstr Windows

11.06.2013 09:55 Pencereler


11

Cygwin grep ve daha fazlası;)


2
Cygwin grep'i çalıştırmak için tüm Cygwin paketini yüklemeniz gerekmez. Sadece 5 DLL'nin ihtiyacınız var: cygpcre-0.dll, cygpcreposix-0.dll, cygwin1.dll, cygintl-8.dll ve cyggce_s-1.dll.
JPaget

Cygwin'i uzun süre kullanıyorum ... ve son zamanlarda Windows-Linux-Subsystems ile değiştirmeye çalışıyorum ... uzun süre değil ... CYGWIN'E GERİ DÖN ... çok daha zengin ve daha az müdahaleci ... sadece <cygwin'i ekleyin > \ bin yolu ... ve Windows / Toplu / Powershell ... DOS DOS Box ... Powershell-Box ... vb vs herhangi bir yazılım kullanabilirsiniz. --- BÜYÜK ARAÇ! !!
ZEE

11

Ayrıca, Windows 7 ve üzeri sürümlerde GREP benzeri işlevleri kullanmanın başka bir uygulaması olmadan kullanmanın bir yolunu daha buldum ve eski sistemlerde Powershell'i yükleyebilirsiniz.

In Powershell , Kullanıcı kullanabilirsiniz Nerede-Object o artı daha GREP'te tüm işlevselliği sağlar özelliğinin oldukça kapsamlı belirledi.

Umarım yardımcı olur.


10

Kimsenin FINDSTR'dan bahsetmediğine şaşırdım . Ben grep poweruser değilim, ama findstr, bazı ilkel regex desteği ile, filtre ve stdin filtre için ihtiyacım olanı yapar. Windows ve diğer tüm ürünlerle birlikte gönderilir. (Düzenleme: Birisi findstr'den bahsetti, sanırım geç oldu)


5
"Kimse
FINDSTR'dan

6

GnuWin32 bahsetmeye değer, grep, dosya, sed, groff, girinti, vb.Dahil olmak üzere tüm standart linux araçlarının yerel Win32 sürümünü sağlar.

Ve bu araçların yeni sürümleri yayınlandığında sürekli güncellenir.


Şimdi choclatey'de mevcut gibi görünüyor, bu yüzden cinst GnuWin32 hızlı bir şekilde kurmak için çalışıyor.
Stuart Axon

4

Windows'da dosya arama için Far Manager'ı kullanıyorum . BSD lisanslıdır, konsolda çalışır, cmdline parametrelerini yazmak için zaman kazandırır. İşte Alt-F7 tarafından çağrılan arama iletişim kutusu.Alt-F7


4

Güncelleme: Bu soru ilk sorulduğunda doğru değildi, ancak şimdi Microsoft bir Linux için Windows Alt Sistemini Yükle'ye izin veriyor ve Windows daha sonra grep çalıştıracak. PowerShell'de çalıştırın:

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

Denedim ama bu hatayı veriyor: 'Enable-WindowsOptionalFeature' iç veya dış komut, çalıştırılabilir program veya toplu iş dosyası olarak tanınmıyor. Teşekkürler btw.
Sandun


Teşekkürler. Onu deneyeceğim. ;)
Sandun


3

Mükemmel ve çok hızlı bir dosya arama programı olan Agent Ransack , düzenli ifade aramayı destekler. Öncelikle bir GUI yardımcı programıdır, ancak bir komut satırı arabirimi de mevcuttur.


2

Windows reskit'te "qgrep" adında bir yardımcı program vardır. Zaten kutunuzda olabilir. ;-) Ayrıca "kuyruk" komutu ile birlikte gelir, şükürler olsun!


1

Teknik olarak grep veya komut satırı olmasa da, hem Microsoft Visual Studio hem de Notepad ++ , tam düzenli ifade desteği ile çok iyi bir Dosyalarda Bul özelliğine sahiptir. Komut satırında grep'in CygWin sürümü olmasına rağmen kendimi sık sık kullanıyorum.


1

Bu konuya $ 0.02 ekleyeceğim. dnGREP , geri almayı, windows explorer entegrasyonunu, PDF, fermuar, DOC ve diğer şeylerin içinde arama yapan Windows için harika bir açık kaynak grep aracıdır ...


1

Evet, sağlam bir GUI'ye sahip Windows PC için sadece bir program var ve bu benim için çok önemli. Bir geliştirici olarak çalışıyorum ve sahip olduğum her bilgisayarda, ilk şey XFind programını yükleyin. 1997 yılında yaratıldı ve şimdiye kadar sürüm 1.0 ve şimdiye kadar çalışıyor ve en iyisi. Sık sık bir " .cs", " .aspx", " .sct" (Visual FoxPro form kodu dosyası) veya sadece " . *" Ve XFind tüm dosyaları tarar ve bana dosyaları göstermek ve başka bir harika şey dizenin dosyada nerede olduğunu görebilirsiniz. XFind'in de bir çeşit editörü var. İkili dosya ise bulduğunuz dizeyi gösterecektir. Deneyin ve benim gibi geliştiriciyseniz sonsuza kadar kullanın.


1

Belli ki birçok farklı öneri aldınız.
Ücretsiz, 3. Parti Yardımcı Programı için kişisel seçimim: Ajan Ransack
Ajan Ransack İndir
Biraz kafa karıştırıcı ismine rağmen, iyi çalışıyor ve dosyaları bulmak için çeşitli şekillerde kullanılabilir.

İyi şanslar





0

Son zamanlarda PowerGREP kullandık binlerce oldukça gelişmiş toplu işlemler için . PDF dosyalarının içeriğinde normal ifade araması ve PDF belgelerini büyük ölçekte değiştirme dahil.

Manuel emek zaman kazanmak istiyorsanız, para değer. Bence satın almadan önce deneyebilirsiniz.


0

Çıplak Windows kullanmanız gerekiyorsa, yukarıda belirtilen Powershell seçeneğine ek olarak, iyi RegEx desteğine sahip VBScript'i kullanabilirsiniz.

MS, Technet'te yöneticiler için tonlarca örnek içeren iyi bir komut dosyası alanına da sahiptir.


0

Sadece LikeGrep java yardımcı programını deneyin. Birçok durumda size yardımcı olabilir. İstediğiniz gibi, dosyalarda bulunan bazı metinleri de değiştirebilir. Büyük dosyalar üzerinde çalışmasını garanti eder (8 Gb'ye kadar test edilmiştir)


0

Yukarıda belirtildiği gibi, gnuwin32 projesi grep'in Windows CLI sürümüne sahiptir.

Grafik arayüzlü bir şey istiyorsanız, (açık kaynak) aracı AstroGrep'i tavsiye ederim .


0

Onları kullandığımdan beri bir süredir, ancak Borland (şimdi Embarcadero) C / C ++ derleyicileriyle bir komut satırı grep'i içeriyordu. Bir süredir kayıt olduktan sonra 5.5 sürümlerini ücretsiz olarak indirdiler.



0

PowerGrep'i tavsiye ederim

Birkaç yıl önce bir e-keşif projesi yapmak zorunda kaldım. Bunu buldum fisdstrbazı sınırlamaları vardı en başta fisdstr sonunda başarısız olacağını

komut dosyası birkaç düzine arama terimi / kelime öbeği kullanarak binlerce dosyada arama yapmak zorunda kaldı.

Cygwin'in grep'i çok daha iyi çalıştı , sık sık boğulmadı, ama sonuçta PowerGrep'e gittim çünkü grafik arayüz, ne zaman ve nerede çöktüğünü söylemeyi çok daha kolay hale getirdi ve ayrıca tüm koşullarda ve çıktıda düzenlemek gerçekten kolaydı İstedim. Sonuçta PowerGrep üçünün en güveniliriydi .


0

Bunun biraz eski bir konu olduğunu biliyorum, ama burada yapabileceğiniz başka bir şey var. İnternet erişimi ve oldukça sınırlı boş disk alanı olmayan bir geliştirici VM'si üzerinde çalışıyorum, bu yüzden üzerine kurulu java'yı kullandım.

Normal ifade eşleşmelerini konsola yazdıran küçük java programını derleyin. Kavanozu sisteminizde bir yere koyun, yürütmek için bir toplu iş oluşturun ve klasörü PATH değişkeninize ekleyin:

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 (jgrep.jar ile birlikte):

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

ve PATH ortam değişkeninin sonuna c: \ jgrep ekleyin .

Şimdi jgrep "expression" file.txther yerden arayın .

Bir değiştirici ekledim ve şöyle çağırdım, ifademden bazı belirli grupları yazdırmam gerekiyordu jgrep -printGroup=1 "expression" file.txt.


0

Eski bir soru olduğunu fark ettim ama bir cevap arayan bu yazıyla karşılaştım. Bir tane buldum ve toplu internet belleği için buraya ekledim

Powershell: Select-String Modülü: Microsoft.PowerShell.Utility

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

ve gelişmiş örnekler içeren bilgilendirici bir blog yazısı: "PowerShell'de" nasıl grep "yapılır? https://antjanus.com/blog/web-development-tutorials/how-to-grep-in-powershell/

Bu blog gönderisinden basit bir örnek: cat package.json | Select-String -Pattern web paketi ls ./src/components/ | Select-String -Pattern Görünümü

C:> kedi post.md | Select-String -Pattern "^ \ w *:"


0

Cygwin kullan ...

32 ve 64 bit sürümleri vardır
ve Windows 2000'den (*)
Windows 10 veya Server 2019'a kadar iyi çalışır

Cygwin'i uzun süre kullanıyorum ...
ve son zamanlarda Windows-Linux-Subsystems ile değiştirmeye çalıştım ...

uzun süre değil ...
Hızla tekrar Cygwin'e gittim ...

çok daha esnek, kontrol edilebilir ve zengin ...
ayrıca daha az müdahaleci ...

sadece \ bin yoluna ekleyin ...
ve Windows / Batch / Powershell ...
veya bir DOS-Box ... veya Powershell-Box içindeki herhangi bir yazılımı kullanabilirsiniz ...

Ayrıca
gerçekten nginX veya PHP gibi çalışan bir sürü harika paket yükleyebilirsiniz ... Hatta IIS'imde Cygwin PHP paketini kullanıyorum ...

Bir bonus wou da bir bash kabuğundan kullanabilirsiniz ...
(Bence bu orijinal niyet ;-))

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.