क्या विंडोज में GREP की तरह एक पैटर्न मिलान उपयोगिता है?


179

क्या grepविंडोज कमांड प्रॉम्प्ट से उपलब्ध समान उपयोगिता है , या क्या इसके लिए कोई थर्ड पार्टी टूल है?

जवाबों:


238

एक कमांड-लाइन टूल है जिसे FINDSTRसभी विंडोज़ एनटी-क्लास ऑपरेटिंग सिस्टम के साथ आता है ( FINDSTR /?अधिक जानकारी के लिए कमांड प्रॉम्प्ट विंडो में टाइप करें) यह सब कुछ का समर्थन नहीं grepकरता है लेकिन यह आपकी आवश्यकताओं के लिए पर्याप्त हो सकता है।


7
धन्यवाद! यह grep नहीं है, लेकिन मुझे अन्य लोगों की मशीनों पर अतिरिक्त सॉफ़्टवेयर स्थापित किए बिना कार्य करने में सक्षम होना पसंद है और यह मुझे जाने देगा।
ऋषि

42
आप इसे पाइप प्रतीक के साथ भी उपयोग कर सकते हैं, उदाहरण के लिएnetstat -n | FINDSTR 3389
harperville

3
@sage, कुछ रचनात्मकता के साथ, मचान बिल्कुल grep की तरह काम करता है। विंडोज उदाहरण के लिए इस grep का संदर्भ लें ।
मेकॉन्ग

2
@mkyong - मैं सहमत हूँ। मुझे यह सुझाव देने का मतलब नहीं था कि यह किसी तरह अधूरा है, बस यह अलग है और अधिक साधनों का उपयोग करने के लिए अधिक काम करने की आवश्यकता होती है। कहा जा रहा है, दूसरों के कंप्यूटरों का उपयोग करते समय, खोज करना मेरी पसंद का उपकरण है, लेकिन मुझे हर बार इसका उपयोग करते हुए अपनी याददाश्त को सिंटैक्स पर ताज़ा करना होगा।
ऋषि

1
@gonzobrains: यह अच्छी तरह से प्रलेखित नहीं है। जहां तक ​​मैं बता सकता हूं, यह हमेशा विंडोज एनटी कमांड प्रॉम्प्ट से उपलब्ध है - निश्चित रूप से, यह विंडोज एनटी 4 में उपलब्ध था, लेकिन मुझे विंडोज 3.5x के बारे में पता नहीं है। कमांड प्रॉम्प्ट को Microsoft द्वारा "द्वितीय श्रेणी के नागरिक" के रूप में माना जाता था, तब बहुत सारे उपयोगी कमांड-लाइन उपयोगिताओं को प्रलेखन में अनदेखा किया गया है
केन कीनन

35

PowerShell (Windows 7 / 2008R2 पर मानक के रूप में शामिल, XP / 2003 / Vista / 2008 के लिए वैकल्पिक) जिसमें select-stringइस उद्देश्य के लिए cmdlet शामिल है ।


10
जबकि Select-String (alias: sls) नियमित अभिव्यक्ति का उपयोग करता है, यह निर्देशिका पुनरावृत्ति जैसी कुछ बुनियादी सुविधाओं का समर्थन नहीं करता है। इसके लिए आपको कई पॉवरशेल कमांड को संयोजित करना होगा। जैसे "dir -R -Include * .txt | sls" ^ My Regex String $ "
yzorg

33

GnuWin प्रोजेक्ट द्वारा विंडोज के लिए Grep (2014-10-02: यह पुराना है, नीचे टिप्पणी देखें)


1
यह GnuWin32 grep है। इसे grep के नवीनतम संस्करण में अपडेट नहीं किया गया है। उसके लिए आपको Cygwin संस्करण प्राप्त करना होगा। नीचे टिप्पणी देखें।
जेपीगेट

27

जैसा कि उल्लेख किया गया है, ढलाई ठीक काम करती है। उदाहरण :

C:> दिर | विंडोज का पता लगाएं

11/06/2013 09:55 अपराह्न विंडोज


11

साइगविन grep और अधिक;)


2
आपको Cygwin grep को चलाने के लिए पूरे Cygwin पैकेज को स्थापित करने की आवश्यकता नहीं है। आपको बस 5 DLL की आवश्यकता है: cygpcre-0.dll, cygpcreposix-0.dll, cygwin1.dll, cygintl-8.dll, और cyggce_s-1.dll।
जेपीगेट

मैं एक लंबे समय के लिए Cygwin का उपयोग करता हूं ... और हाल ही में Windows-Linux-Subsystems के साथ स्थानापन्न करने का प्रयास करता हूं ... लंबे समय तक नहीं ... BACK TO CYGWIN ... बहुत अधिक समृद्ध और कम घुसपैठ ... बस <cygwin जोड़ें > पथ के लिए \ बिन ... और आप इसे विंडोज / बैच / पॉवर्सशेल में उपयोग कर सकते हैं ... एस डॉस-बॉक्स में ... एक पॉवर्सशेल-बॉक्स ... आदि आदि में ।--- महान उपकरण! !!
ZEE

11

मैंने GREP का उपयोग करने का एक और तरीका पाया, जैसे कि विंडोज 7 और इसके बाद के संस्करण में कार्यक्षमता स्थापित करने के लिए बिना किसी अतिरिक्त एप्लिकेशन को स्थापित किए और पुराने सिस्टम पर आप Powershell का उपयोग कर सकते हैं।

में Powershell , उपयोगकर्ता उपयोग कर सकते हैं कहाँ-वस्तु यह सुविधा का काफी व्यापक सेट है कि प्लस अधिक ग्रेप की सभी कार्यक्षमता प्रदान करता है।

आशा करता हूँ की ये काम करेगा।


10

मुझे आश्चर्य है कि किसी ने भी FINDSTR का उल्लेख नहीं किया है । मैं कोई grep पॉवरसुसर नहीं हूं, लेकिन कुछ प्राइमरी रेक्सक्स सपोर्ट वाले फाइल्स और स्टडीन को खोजने के लिए मुझे इसकी आवश्यकता होती है। विंडोज के साथ जहाज और वह सब। (संपादित करें: अच्छी तरह से किसी ने उल्लेख किया, यह देर हो चुकी है मुझे लगता है)


5
"किसी ने FINDSTR का उल्लेख नहीं किया है" - "सबसे अच्छा" उत्तर एक वर्ष पुराना है और FINDSTR का उल्लेख करता है ...
chiccodoro

6

GnuWin32 ध्यान देने योग्य है, यह सभी मानक linux टूल्स का देशी Win32 संस्करण प्रदान करता है, जिसमें grep, फ़ाइल, sed, groff, indent, आदि शामिल हैं।

और यह लगातार अद्यतन किया जाता है जब इन उपकरणों के नए संस्करण जारी किए जाते हैं।


यह अब चॉक्लेट पर उपलब्ध है, इसलिए सिस्टिन ग्नूविन 32 इसे जल्दी से स्थापित करने के लिए काम करता है।
स्टुअर्ट एक्सॉन

4

विंडोज पर मैं फ़ाइल खोज के लिए सुदूर प्रबंधक का उपयोग करता हूं । बीएसडी लाइसेंस प्राप्त, कंसोल में काम करता है, टाइपिंग cmdline मापदंडों पर समय बचाता है। यहां इसका खोज संवाद Alt-F7 द्वारा दिया गया है।Alt-F7


4

अद्यतन: जब यह प्रश्न मूल रूप से पूछा गया था, तो यह सच नहीं था, लेकिन अब Microsoft लिनक्स के लिए विंडोज सबसिस्टम को स्थापित करने देता है , और विंडोज तब gbp चलाएगा। PowerShell में, चलाएँ:

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

मैंने इसकी कोशिश की, लेकिन यह इस त्रुटि को देता है: 'Enable-WindowsOptionalFeature' को आंतरिक या बाहरी कमांड, ऑपरेशनल प्रोग्राम या बैच फ़ाइल के रूप में मान्यता प्राप्त नहीं है। धन्यवाद btw।
सेंदुन


धन्यवाद। मैं कोशिश करूंगा कि ;)
Sandun

3

UnxUtils , Unix उपयोग का एक बेहतरीन सेट है जो विंडोज पर चलता है। इसमें grep, sed, gawk इत्यादि हैं।


3
UnxUtils को वर्षों से बनाए नहीं रखा गया है। इसके बजाय GnuWin32 या Cygwin का उपयोग करें।
जेपीगेट

विंडोज़ पर gnu (gow) GnuWin32 की तुलना में अधिक पूर्ण है: github.com/bmatzelle/gow/wiki
सिमोन डी

3

एक उत्कृष्ट और बहुत तेज़ फ़ाइल खोज उपयोगिता, एजेंट रैंसैक , नियमित अभिव्यक्ति खोज का समर्थन करता है। यह मुख्य रूप से एक GUI उपयोगिता है, लेकिन एक कमांड-लाइन इंटरफ़ेस भी उपलब्ध है।


2

विंडोज़ रिसकिट में "क्यूग्रेप" नामक एक उपयोगिता है। आपके पास यह पहले से ही आपके बॉक्स पर हो सकता है। ;-) यह "पूंछ" कमांड के साथ भी आता है, धन्यवाद भगवान!


1

हालाँकि तकनीकी रूप से न तो grep और न ही कमांड लाइन, Microsoft विज़ुअल स्टूडियो और नोटपैड ++ दोनों में ही फुल एक्सप्रेशन सपोर्ट के साथ फाइल्स फ़ीचर में बहुत अच्छी जगह है। मैं खुद को अक्सर उनका उपयोग करते हुए पाता हूं, हालांकि मेरे पास कमांड लाइन पर grep का साइग्विन संस्करण भी उपलब्ध है।


1

मैं इस धागे में अपना $ 0.02 जोड़ूंगा। dnGREP उन विंडोज़ के लिए एक बेहतरीन ओपन सोर्स grep टूल है, जो पूर्ववत, विंडोज़ एक्सप्लोरर इंटीग्रेशन, PDF, ज़िप, DOCs और अन्य सामानों के गुच्छा के अंदर खोज का समर्थन करता है ...


1

हां, विंडोज पीसी के लिए केवल एक कार्यक्रम है जिसमें ठोस जीयूआई है और यह मेरे लिए आवश्यक उपयोग है। मैं एक डेवलपर के रूप में काम करता हूं और मेरे पास मौजूद हर कंप्यूटर पर, पहले XFind प्रोग्राम इंस्टॉल करें। यह 1997 में बनाया गया है और अब तक संस्करण 1.0 है और अब तक काम करता है और यह सबसे अच्छा है। अक्सर मुझे एक " .cs", " .aspx", " .sct" (विज़ुअल फॉक्सप्रो फॉर्म कोड फ़ाइल) या "" । * "और XFind सभी फाइलों को स्कैन करने और मुझे फाइलें दिखाने और दूसरी बड़ी चीज दिखाने की आवश्यकता होती है।" कि आप देख सकते हैं कि फ़ाइल में स्ट्रिंग कहाँ है। XFind में किसी प्रकार के संपादक भी हैं। यदि यह बाइनरी फ़ाइल है तो यह आपको स्ट्रिंग ढूंढेगी। इसे आज़माएँ और इसे हमेशा के लिए उपयोग करें यदि आप मेरे जैसे डेवलपर हैं।


1

आपने स्पष्ट रूप से बहुत सारी सिफारिशों को प्राप्त किया है।
Free, 3rd पार्टी यूटिलिटी के लिए मेरी व्यक्तिगत पसंद है: Agent Ransack
Agent Ransack डाउनलोड
अपने कुछ भ्रामक नाम के बावजूद, यह अच्छी तरह से काम करता है और इसका उपयोग विभिन्न प्रकार की फ़ाइलों को खोजने के लिए किया जा सकता है।

शुभ लाभ


1

ऑल-इन-वन बिजीबॉक्स में grep / egrep / sed / awk और MANY अधिक हैं

इसे प्राप्त करें:

अद्यतन: अब उपलब्ध नहीं है - या कुछ पुराने


3
जब प्रश्नकर्ता ने थर्ड पार्टी टूल्स के लिए पूछा, तो मुझे नीचे क्यों जाना चाहिए?
बर्नहार्ड


0

यदि आपको भुगतान किए गए उत्पाद से कोई आपत्ति नहीं है, तो PowerGREP मेरा व्यक्तिगत पसंदीदा है।


0

हमने हाल ही में PowerGREP का उपयोग किया है हजारों फाइलों पर कुछ काफी उन्नत थोक संचालन के लिए । पीडीएफ फाइलों की सामग्री में रेगेक्स खोज, और लार्जस्केल में पीडीएफ दस्तावेजों को बदलना।

यदि आप मानव श्रम से समय बचाना चाहते हैं तो इसका मूल्य है। मुझे लगता है कि खरीदने से पहले आप इसे आज़मा सकते हैं।


0

यदि आपको नंगे विंडोज का उपयोग करना है, तो ऊपर बताए गए पॉवर्सशेल विकल्प के अलावा, आप वीबीएसस्क्रिप्ट का उपयोग कर सकते हैं, जिसमें सभ्य एक्सएक्सएक्स समर्थन है।

MS के पास प्रशासकों के लिए एक टन उदाहरण के साथ Technet पर एक अच्छा स्क्रिप्टिंग क्षेत्र है।


0

बस LikeGrep जावा उपयोगिता का प्रयास करें। यह बहुत सारे मामलों में आपकी मदद कर सकता है। जैसा आप चाहते हैं, यह फ़ाइलों में पाए जाने वाले कुछ पाठ को भी बदल सकता है। यह बड़ी फ़ाइलों पर अपने काम को बढ़ाता है (अप करने के लिए 8 जीबी परीक्षण)


0

जैसा कि ऊपर उल्लेख किया गया है, gnuwin32 परियोजना में grep का एक Windows CLI संस्करण है।

यदि आप एक ग्राफिकल इंटरफ़ेस के साथ कुछ चाहते हैं, तो मैं (ओपन-सोर्स) टूल एस्ट्रोएरेप की सिफारिश करूंगा


0

जब से मैंने उनका उपयोग किया है, तब से कुछ समय हो गया है, लेकिन बोरलैंड (अबबारकोडरो) ने अपने C / C ++ कंपाइलर के साथ कमांड लाइन grep शामिल किया है। कुछ समय के लिए, उन्होंने पंजीकरण के बाद अपने 5.5 संस्करण को मुफ्त डाउनलोड के रूप में उपलब्ध कराया है।



0

मैं पावरग्रेप की सलाह देता हूं

मुझे कई साल पहले एक ई-डिस्कवरी प्रोजेक्ट करना था। मैंने पाया कि fisdstrकुछ सीमाएँ थीं, सबसे विशेष रूप से फ़िसड्रेस अंततः विफल हो जाएंगे

लिपि को दर्जनों खोज शब्दों / वाक्यांशों के एक जोड़े का उपयोग करके हज़ारों फाइलों में खोजना था।

साइग्विन के grep ने बहुत बेहतर काम किया , यह अक्सर चोक नहीं हुआ, लेकिन अंततः मैं PowerGrep में चला गया क्योंकि ग्राफिकल इंटरफ़ेस ने यह बताना आसान कर दिया कि यह कब और कहाँ दुर्घटनाग्रस्त हो गया, और यह भी सभी सशर्त और आउटपुट को संपादित करना वास्तव में आसान था मैं चाहता था। अंततः पावरग्रेप तीनों में सबसे विश्वसनीय था


0

मुझे पता है कि यह थोड़ा पुराना विषय है लेकिन, यहाँ एक और बात है जो आप कर सकते हैं। मैं एक डेवलपर वीएम पर काम करता हूं जिसमें कोई इंटरनेट एक्सेस नहीं है और काफी सीमित डिस्क स्थान है, इसलिए मैंने इस पर स्थापित जावा का उपयोग किया है।

छोटे जावा प्रोग्राम को संकलित करें जो रेगेक्स को कंसोल से मिलाता है। जार को अपने सिस्टम पर कहीं रखें, इसे निष्पादित करने के लिए एक बैच बनाएं और अपने 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 (jgrep.jar के साथ):

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

और c: \ jgrep जोड़ें पाथ पर्यावरण चर के अंत में ।

अब बस बुलाओ jgrep "expression" file.txt कहीं से भी ।

मुझे अपनी अभिव्यक्ति से कुछ विशिष्ट समूहों को प्रिंट करने की आवश्यकता थी इसलिए मैंने एक संशोधक जोड़ा और इसे पसंद किया jgrep -printGroup=1 "expression" file.txt


0

मुझे इसके पुराने सवाल का एहसास है लेकिन मैं इस पोस्ट के जवाब में आया। और मैंने सामूहिक इंटरनेट मेमोरी के लिए इसे यहां जोड़ दिया है

पॉवर्सशेल: सेलेक्ट-स्ट्रिंग मॉड्यूल: Microsoft.PowerShell.Utility

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

और उन्नत परीक्षाओं के साथ एक सूचनात्मक ब्लॉग पोस्ट: "कैसे PowerShell में" grep "" https://antjanus.com/blog/web-development-tutorials/how-to-grep-in-powershell "

उस ब्लॉग पोस्ट का एक सरल उदाहरण: cat package.json | Select-String -Pattern webpack ls ./src/compenders/ | चयन स्ट्रिंग स्ट्रिंग दृश्य

C:> कैट पोस्ट चयन-स्ट्रिंग -Pattern "^ \ w *:"


0

Cygwin का उपयोग करें ...

इसमें 32 और 64 बिट संस्करण हैं
और यह विंडोज 2000 (*)
से विंडोज 10 या सर्वर 2019 तक ठीक काम करता है

मैं लंबे समय से Cygwin का उपयोग करता हूं ...
और हाल ही में Windows-Linux-Subsystems के साथ स्थानापन्न करने का प्रयास किया गया है ...

लंबे समय के लिए नहीं ...
मैं जल्दी से फिर से सिग्विन वापस चला गया ...

बहुत अधिक लचीला, नियंत्रित और समृद्ध ...
कम घुसपैठ भी ...

बस पथ में \ bin जोड़ें ...
और आप इसे विंडोज / बैच / पॉवर्सशेल में ...
या किसी डॉस-बॉक्स में ... या एक पॉवर्सशेल-बॉक्स में उपयोग कर सकते हैं ...

इसके अलावा आप एक टन महान पैकेजों को स्थापित कर सकते हैं
जो वास्तव में काम करते हैं ... जैसे कि nginX या PHP ... मैं अपने मोबाइल में Cygwin PHP पैकेज का भी उपयोग करता हूं ...

बोनस वू के रूप में आप इसे बैश शेल से भी उपयोग कर सकते हैं ...
(मुझे लगता है कि यह मूल इरादा था; ;-))

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.