तार्किक या तुलना करना findstr.exe के साथ


11

यह एक बेवकूफी भरा सवाल हो सकता है लेकिन दस्तावेज़ीकरण पढ़ने के बाद भी मुझे यकीन नहीं है कि किसी फ़ाइल में सभी पंक्तियों को कैसे खोजना है जिसमें ".cpp" या ".h" हो।

क्या ऐसा करने के लिए कोई रास्ता है?

उदाहरण के लिए (काम नहीं करता है):

findstr /i .cpp,.h // , == OR

जवाबों:


9

यह एक शॉट दें, आपके लिए काम करना चाहिए।

findstr /i "\.cpp \.h" myfile.txt

उद्धरणों के भीतर लपेटें और एक स्थान के साथ अलग करें। ध्यान दें, आपको भी बचना होगा उन दोनों में।


4

यदि आपको वाक्यांश (अंतरिक्ष से अलग शब्द) शामिल करने की आवश्यकता है, तो आप इसे कर सकते हैं:

findstr /i /c:"IBSS" /c:"WDI Version" /c:"Soft Ap"

या यदि आपको कुछ अवांछित पंक्तियाँ मिल रही हैं, तो आप उन्हें /vपैरामीटर का उपयोग करके भी बाहर कर सकते हैं :

findstr /i /c:Hosted /c:Version /c:Driver | findstr /v /i /c:drivers /c:native

(विंडोज 7 और विंडोज 10 पर इसका परीक्षण किया गया)


ध्यान दें, बड़े डेटासेट को कुशलतापूर्वक संसाधित करने के लिए, जब संभव हो तो दूसरी फाइंडस्ट्रीम कमांड से बचने के लिए, या जब इसे नहीं खिलाया जा रहा है, तो लाइनों को कम करने के लिए यह पूर्ववर्ती है। यह संभव है जहां FindStr कमांड द्वारा दी गई सरलीकृत रेगेक्स कम्पैरिजन का उपयोग करके शामिल किए जाने वाले शब्दों के साथ किसी तरह से ओवरलैप को बाहर किया जाए। उदाहरण में दिए गए "ड्राइवर" से मेल खाते हैं, लेकिन "DriverS" को छोड़कर मूल्यांकन करने के लिए दूसरे FindStr को पारित लाइनों को कम करके बड़े डेटासेट पर तेजी से होने की क्षमता है। अर्थात्FindStr /I /R /C:"Hosted" /C:"Version /C:"Driver[^S]" | FindStr /v /i /c:"Native"
बेन पर्सिक

इसके अलावा, यदि आप अपने विशेष डेटासेट को अच्छी तरह से जानते हैं, तो आप पहले से ही जान सकते हैं कि अधिकांश शर्तें आप अपने डेटासेट के बहुमत के लिए खाते से बाहर करना चाहते हैं, तो यह बहिष्करण विवरणों को पहले स्थान पर रखने के लिए फायदेमंद हो सकता हैFindStr /V /I /C:"Native" /C:"Drivers" | FindStr /I /R /C:"Hosted" /C:"Version /C:"Driver"
बेन कार्मिक

0

यदि आप ORतर्क बनाते हैं, तो इस बात पर निर्भर करता है कि आप क्या खोज रहे हैं और आपके प्रत्याशित भविष्य में परिवर्तन, यदि लागू हो।

यदि यह उन प्रश्नों की सूची है, जिनमें कोई व्हाट्सएप नहीं है, तो आप इसे इस तरह से कर सकते हैं, त्वरित और गंदे:

findstr "thing1 thing2 thing3 thing4 thing5" और यदि उनमें से कोई भी चीज मौजूद है, तो यह सच का मूल्यांकन करेगा और 0 से बाहर निकलेगा।

यदि आप व्हाट्सएप की तलाश कर रहे हैं, तो आपको पैरामीटर findstrके /c:""प्रकार के साथ शाब्दिक खोज स्ट्रिंग का उपयोग करना होगा। व्हॉट्सएप न होने पर भी आप इस प्रकार के पैरामीटर का उपयोग कर सकते हैं।

/C:string Uses specified string as a literal search string.

हालाँकि , आप त्वरित और गंदे के साथ शाब्दिक संयोजन नहीं कर सकते । उदाहरण के लिए, यह काम नहीं करेगा:

findstr "thing1 thing2" /c:"thing3 thingy"

आपको पहले के मापदंडों को शाब्दिक मापदंडों में बदलना होगा, जैसे:

findstr /c:"thing1" /c:"thing2" /c:"thing3 thingy"

इस वजह से, शाब्दिक विकल्प का उपयोग करना एक बेहतर अभ्यास है क्योंकि यह गतिशील स्क्रिप्ट के साथ बेहतर होगा। हालाँकि यदि यह केवल प्रश्नों का एक स्थिर सेट है जिसमें कोई व्हाट्सएप नहीं है, तो त्वरित और गंदे तरीके को पर्याप्त होना चाहिए।

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