Wednesday 13 December 2017

लिनक्स ग्रेप नो द्विआधारी विकल्प


grep - यूनिक्स, डायरेक्स में लिनक्स कमांड रिकर्स, PATTERN से मेल खाने वाली फ़ाइल को छोड़ें। किसी न किसी या अपठनीय फ़ाइलों के बारे में त्रुटि संदेशों को दबाएं पोर्टेबिलिटी नोट: जीएनयू ग्रेप के विपरीत पारंपरिक grep POSIX.2 के अनुरूप नहीं था, क्योंकि पारंपरिक grep में एक - q विकल्प नहीं था और इसके - s विकल्प का व्यवहार GNU grep rsquos - q विकल्प के रूप में हुआ था। शैल स्क्रिप्ट का उद्देश्य पारंपरिक grep के लिए पोर्टेबल होना चाहिए, दोनों- q और - s से बचना चाहिए और इसके बजाय उत्पादन को devnull के बजाय पुनर्निर्देशित करना चाहिए। द्विआधारी के रूप में फाइल (एस) का इलाज करें डिफ़ॉल्ट रूप से, MS-DOS और MS-Windows के तहत, grep फाइल से पहले 32KB पढ़ने की सामग्री को देखकर फाइल प्रकार को अनुमान लगाता है। यदि grep फ़ाइल का निर्णय लेता है तो एक पाठ फ़ाइल है, यह सीआर अक्षरों को मूल फ़ाइल सामग्री से (नियमित अभिव्यक्ति के साथ और सही ढंग से काम करने के लिए) स्ट्रिप्स करता है निर्दिष्ट करने वाली - यू इस अनुमानित कार्य को ओवरराइल करता है, जिससे सभी फाइलें पढ़ने के लिए और मेलिंग तंत्र शब्दशः को पारित हो जाती हैं यदि फ़ाइल प्रत्येक पंक्ति के अंत में सीआरएलएफ जोड़े के साथ एक पाठ फ़ाइल होती है, तो यह कुछ नियमित अभिव्यक्तियों को विफल करने के लिए कारण होगा। इस विकल्प का एमएस-डॉस और एमएस-विंडोज के अलावा अन्य प्लेटफॉर्म पर कोई प्रभाव नहीं है यूनिक्स-शैली बाइट ऑफ़सेट रिपोर्ट करें। यह स्विच grep को बाइट ऑफ़सेट की रिपोर्ट करने का कारण बनता है जैसे कि फाइल यूनिक्स-स्टाइल टेक्स्ट फ़ाइल थी, यानी सीआर वर्णों के साथ छीन लिया इससे यूनिक्स मशीन पर जीआरपी चलाने के लिए समान परिणाम उत्पन्न होंगे। इस विकल्प का कोई प्रभाव नहीं है, जब तक कि - बी विकल्प का भी उपयोग न किया जाए, इसका MS-DOS और MS-Windows के अलावा अन्य प्लेटफॉर्म पर कोई प्रभाव नहीं पड़ता है। मानक त्रुटि के लिए grep की संस्करण संख्या प्रिंट करें। यह संस्करण संख्या सभी बग रिपोर्ट (नीचे देखें) में शामिल की जानी चाहिए। मिलान की भावना को उलटा, गैर-मिलान लाइनों को चुनने के लिए केवल उन पंक्तियों का चयन करें जिनमें मिलान होते हैं जो पूरे शब्दों का निर्माण करते हैं परीक्षा यह है कि मेलिंग एस्ट्रिंग या तो पंक्ति की शुरुआत में होनी चाहिए, या गैर-शब्द घटक वर्ण के पहले होना चाहिए। इसी प्रकार, यह या तो लाइन के अंत में या उसके बाद गैर-शब्द घटक वर्ण के बाद होना चाहिए। शब्द-घटक वर्ण अक्षर, अंक और अंडरस्कोर हैं। केवल उन्हीं मैचों का चयन करें जो पूरी रेखा से बिल्कुल मेल खाते हैं। - i के लिए अप्रचलित पर्याय आउटपुट एक शून्य बाइट (ASCII NUL वर्ण) उस वर्ण के बजाय जो सामान्य रूप से फ़ाइल नाम का अनुसरण करता है। उदाहरण के लिए, grep - lz प्रत्येक नया नाम के बजाय सामान्य न्यूलाइन के बाद एक शून्य बाइट आउटपुट करता है। यह विकल्प आउटपुट निर्बुद्ध बनाता है, यहां तक ​​कि फाइल नाम की उपस्थिति में भी असामान्य अक्षर जैसे न्यूलाइन शामिल हैं। यह विकल्प कमांड जैसे- find - print0 के साथ इस्तेमाल किया जा सकता है पर्ल -0 सॉर्ट-जेज़ और xargs -0 को अनियंत्रित फ़ाइल नामों को संसाधित करने के लिए, यहां तक ​​कि उन लोगों को भी जो कि न्यूलाइन वर्णों को शामिल करते हैं। दिए गए स्ट्रिंग को एक एकल फ़ाइल test. sh बिल्ली test. sh में खोज करने के लिए binbash fun () गूंज यह एक परीक्षा है। ऊपर दिए गए फ़ाइल से सफलता संदेश निकास 1 के साथ हमारी शैल स्क्रिप्ट को समाप्त करें grep exit: grep exit demofile एकाधिक फ़ाइलों में दी गई स्ट्रिंग के लिए जांचना: इस मामले में test. sh और test1.sh cat test. sh binbash मजेदार () गूंज यह एक है परीक्षण। सफलता संदेश से बाहर निकलें 1 बिल्ली test1.sh binbash fun () गूंज के साथ हमारी शैल स्क्रिप्ट को समाप्त करें यह एक test1 है सफलतापूर्वक संदेश के साथ हमारी शैल स्क्रिप्ट को समाप्त करें exit 0 grep exit दोनों फाइलों में test. sh और test1.sh: test1.sh: exit 0 test. sh: exit 1 grep - i का उपयोग करने के लिए असंवेदनशील केस का केस, test1.sh cat में EXIT जोड़ा गया test1.sh binbash मजा () गूंज यह एक test1 है सफलता संदेश के साथ हमारी शेल स्क्रिप्ट को समाप्त करें, 0 से बाहर निकलें 0 grep से बाहर निकलें test1.sh test1.sh: exit 0 grep - i निकास परीक्षा test1.sh: सफलता संदेश के साथ हमारी शैल स्क्रिप्ट को समाप्त करें, 0 test1.sh से बाहर निकलें: exit 0 दो विकल्प के साथ - i विकल्प के रूप में, इसके मामले में असंवेदनशील। मैंने निम्नलिखित बाइनरी फ़ाइल उत्पन्न की है: और कहते हैं, मैं सभी शून्यों (0x00) के स्थान ढूंढना चाहता हूं, grep-like वाक्यविन्यास का उपयोग करना सबसे अच्छा मैं अभी तक ऐसा कर सकता हूं: हालांकि, यह मूल रूप से मूल बाइनरी फ़ाइल में प्रत्येक बाइट को एक बहु-बाइट एएससीआईआई प्रतिनिधित्व में परिवर्तित करता है, जिस पर grep ऑप्टिमाइज़ेशन का बिल्कुल प्रमुख उदाहरण नहीं संचालित करता है :) क्या ऐसा कुछ है जो द्विआधारी ग्रेप के लिए है लिनक्स शायद, कुछ भी, जो एक नियमित अभिव्यक्ति की तरह वाक्यविन्यास का समर्थन करता है, लेकिन बाइट वर्णों के लिए भी - अर्थात, मैं कुछ (x00) बी की तरह कुछ लिख सकता हूं और बाइट्स 0 के बीच शून्य या उससे अधिक होने वाले बाइट्स के बीच एक (97) और बी (98) संपादित करें: संदर्भ यह है कि मैं एक ड्राइवर पर काम कर रहा हूं, जहां मैं 8-बिट डेटा पर कब्जा कर रहा हूं, डेटा में कुछ गलत हो जाता है, जो कि किलोबाइट मेगाबाइट तक हो सकता है, और आईडी विशेष हस्ताक्षर की जांच करना और जहां वे पाए जाते हैं। (अब तक, मैं किलोबाइट स्निपेट्स के साथ काम कर रहा हूं, इसलिए ऑप्टिमाइज़ेशन महत्वपूर्ण नहीं है - लेकिन अगर मैं मेगाबाइट लंबे कैप्चर में कुछ त्रुटियां प्राप्त करना शुरू कर देता हूं, और मुझे उनको विश्लेषण करने की आवश्यकता है, तो मेरा अनुमान है कि मैं कुछ ज्यादा अनुकूलित करना चाहता हूं :)। और विशेष रूप से, आईडी की तरह, जहां मैं एक चरित्र के रूप में एक बाइट के लिए grep कर सकता हूं - हेक्डम्प मुझे प्रति बाइट स्ट्रिंग्स की खोज करने के लिए मजबूर करता है) ईटीआईटी 3: टीच्रिस्ट के उत्तर के लिए धन्यवाद, यहां पर भी एक उदाहरण है, grepping और मिलान, और परिणाम प्रदर्शित करना (हालांकि ओपी के रूप में काफी एक ही सवाल नहीं): मिलान करने वाले डेटा को एक बाइट (दो हेक्स अक्षर) के रूप में समूहीकृत किया जाता है, फिर एच 2 एच 2 एच 2 के रूप में कई बाइट्स के लिए निर्दिष्ट किया जाना चाहिए मिलान स्ट्रिंग में मेरे मैच के रूप में। 000xCC000। 17 बाइट्स को कवर करता है, मैं पर्ल में H2x17 लिख सकता हूँ I इनमें से प्रत्येक एच 2 एक अलग वैरिएबल (एक सूची के रूप में) लौटाएगा, इसलिए जुड़ने के लिए उन दोनों के बीच रिक्त स्थान जोड़ने के लिए भी इस्तेमाल किया जाना चाहिए - अंततः: खैर। वास्तव में पर्ल बहुत अच्छा द्विआधारी grepping सुविधा है, मुझे स्वीकार करना होगा :) जब तक कोई वाक्यविन्यास को ठीक से सीखता है :) 14 नवंबर को 10 बजे 22:31 पूछा जाएगा कि एक व्यक्ति मनमाना द्विआधारी स्ट्रिंग के लिए इसे कैसे लागू करेगा मैं आपके पर्ल की कोशिश की - ln0777e 39print pos () जबकि 47illegal47g39 47usr47bin47awk दृष्टिकोण एक कच्ची डिस्क डिवाइस फ़ाइल में खो दिया सामग्री को खोजने के लिए, लेकिन perl मेरे साथ में भाग के माध्यम से memoryquot के भाग के साथ barfed ndash fuzzyTew दिसम्बर 9 16 पर 14:12 एक ही तरीका है कि केवल एक grep का उपयोग करके अपनी तत्काल समस्या को हल करने का एक तरीका एक एकल नल बाइट वाली फ़ाइल बनाना है उसके बाद, grep - abo - f nullbytefile targetfile निम्न आउटपुट का उत्पादन करेगा। यह निश्चित रूप से प्रत्येक बाइट ऑफसेट के रूप में अनुरोध किया जाता है - b के बाद एक रिक्त बाइट द्वारा अनुरोध किया जाता है, जैसा कि - ओ आईडी द्वारा अनुरोध किया जाता है, वह पहले पर्ल का वकील होगा, लेकिन इस मामले में विस्तारित परिवार को लाने की कोई आवश्यकता नहीं है। लिनक्स और यूनिक्स grep कमांड grep । जो वैश्विक रेगुलर एक्सप्रेशन प्रिंट के लिए है, लाइन द्वारा टेक्स्ट लाइन प्रोसेस करता है और किसी भी लाइन को प्रिंट करता है जो एक विशिष्ट पैटर्न से मेल खाते हैं grep वाक्यविन्यास Grep एक फ़ाइल, एकाधिक फ़ाइलों, या इनपुट की एक धारा में पाठ के खिलाफ एक नियमित अभिव्यक्ति से मिलान करने के लिए एक शक्तिशाली टूल है। यह उस पाठ के PATTERN की खोज करता है जिसे आप कमांड लाइन पर निर्दिष्ट करते हैं, और आपके लिए परिणामों को आउटपुट करते हैं। उदाहरण का प्रयोग कहता है कि अपने मशीन पर HTML फ़ाइलों में हमारे उत्पादों को शीघ्रता से ढूंढना चाहते हैं। एक फाइल खोजकर शुरूआत करें यहाँ, हमारे PATTERN हमारे उत्पादों और हमारे FILE उत्पाद - listing. html है। एक पंक्ति हमारे पैटर्न में पाई गई थी, और grep टर्मिनल से पूरी मिलान लाइन को आउटपुट करता है। रेखा हमारे टर्मिनल चौड़ाई से अधिक लंबा है, इसलिए पाठ को निम्न पंक्तियों के आसपास लपेटता है, लेकिन यह आउटपुट हमारी फ़ाइल में ठीक एक पंक्ति से मेल खाती है। नोट: PATTERN को grep द्वारा नियमित अभिव्यक्ति के रूप में व्याख्या की जाती है। उपर्युक्त उदाहरण में, हम सभी वर्णों (अक्षरों और अंतरिक्ष) का प्रयोग शाब्दिक रूप से नियमित अभिव्यक्तियों में किया जाता है, इसलिए केवल सटीक वाक्यांश मिलान किया जाएगा। अन्य पात्रों के विशेष अर्थ हैं, हालांकि कुछ विराम चिह्नों को mdash, उदाहरण के लिए। अधिक जानकारी के लिए, हमारे नियमित अभिव्यक्ति त्वरित संदर्भ देखें। रंग में जीआरपी आउटपुट देखना अगर हम --color विकल्प का उपयोग करते हैं, तो हमारे सफल मैचों को हमारे लिए हाइलाइट किया जाएगा: सफल मैचों की लाइन संख्या देखना यह अधिक उपयोगी होगा यदि हम जानते हैं कि हमारी फाइल में मिलान लाइन कहां दिखाई देती है। यदि हम - n विकल्प निर्दिष्ट करते हैं, तो grep लाइन संख्या के साथ प्रत्येक मिलान लाइन को प्रीफिक्स करेगी: हमारी मिलान लाइन 18 से उपसर्ग है: जो हमें बताती है कि यह हमारी फ़ाइल में पंक्ति 18 से मेल खाती है। केस-असंवेदनशील grep खोजना क्या होगा यदि हमारे उत्पाद वाक्य की शुरुआत में दिखाई देते हैं, या सभी अपरकेस में प्रकट होता है, तो हम केस-असंवेदनशील मिलान करने के लिए - i विकल्प को निर्दिष्ट कर सकते हैं: - i विकल्प का उपयोग करते हुए, grep लाइन पर एक मेल पाता है 23 के रूप में अच्छी तरह से वाइल्डकार्ड का उपयोग करते हुए एकाधिक फ़ाइलों की खोज करना यदि हमारे पास कई फाइलें हैं, तो हम अपने FILE नाम में वाइल्डकार्ड का उपयोग करके सभी खोज सकते हैं। उत्पाद - listing. html निर्दिष्ट करने के बजाय हम एक तारांकन () और. html एक्सटेंशन का उपयोग कर सकते हैं जब कमांड निष्पादित हो जाती है, तो शेल एक्स्टिरिस को किसी भी फाइल के नाम पर फैलता है जो उसे पाता है (वर्तमान निर्देशिका में) जो.html में समाप्त होता है। ध्यान दें कि प्रत्येक पंक्ति विशिष्ट फ़ाइल के साथ शुरू होती है जहां यह मैच होता है लगातार उप-निर्देशिकाओं को खोजना हम उप-निर्देशिकाओं और उन फ़ाइलों को खोज में विस्तारित कर सकते हैं जो - r विकल्प का उपयोग करते हैं, जो कि grep को अपनी खोज को बार-बार करने के लिए कहता है आइए हमारे FILE नाम को सिर्फ एक तारांकन () पर बदल सकते हैं, ताकि यह किसी फ़ाइल या निर्देशिका नाम से मेल खा सके, न कि केवल HTML फाइलें: यह हमें तीन अतिरिक्त मैचों की सुविधा देता है ध्यान दें कि निर्देशिका नाम किसी भी मेल फाइल के लिए शामिल है जो वर्तमान निर्देशिका में नहीं हैं। अधिक शक्तिशाली खोजों को करने के लिए नियमित अभिव्यक्ति का उपयोग करना grep की वास्तविक शक्ति यह है कि इसका उपयोग नियमित अभिव्यक्ति से मेल करने के लिए किया जा सकता है (यह है कि क्या जीपी में फिर से है)। नियमित अभिव्यक्ति स्ट्रिंग की एक विस्तृत सरणी के मिलान के लिए PATTERN स्ट्रिंग में विशेष वर्ण का उपयोग करते हैं। आइए एक साधारण उदाहरण देखें कहें कि आप अपनी एचटीएमएल फाइलों में हमारे उत्पादों के समान एक वाक्यांश की खोज करना चाहते हैं, लेकिन वाक्यांश हमेशा से शुरू करना चाहिए और उत्पादों के साथ समाप्त करना चाहिए। हम इसके बजाय इस PATTERN निर्दिष्ट कर सकते हैं: our. products नियमित अभिव्यक्ति में, अवधि (।) को एकल-वर्ण वाइल्डकार्ड के रूप में समझा जाता है। इसका अर्थ है कि इस जगह पर दिखाई देने वाला कोई भी चरित्र मैच होगा। तारांकन () का मतलब पूर्ववर्ती चरित्र है, जो शून्य या अधिक बार प्रदर्शित होता है, मैच होगा। तो संयोजन किसी भी चरित्र के किसी भी संख्या से मेल खाएंगे। उदाहरण के लिए, हमारे अद्भुत उत्पादों, हमारा, सबसे अच्छा उत्पाद, और यहां तक ​​कि हमारे उत्पादों का मिलान भी होगा। और क्योंकि - i विकल्प निर्दिष्ट कर रहे थे, हमारे उत्पाद और OuRpRoDuCtS भी मैच करेंगे। इस नियमित अभिव्यक्ति के साथ कमांड चलाने की सुविधा देता है, और देखें कि हम कौन-सी अतिरिक्त मैचों को प्राप्त कर सकते हैं: यहां, हमें हमारे अच्छे उत्पाद वाक्यांश से एक मैच मिला है। Grep एक शक्तिशाली उपकरण है जो आपको पाठ फ़ाइलों के साथ काम करने में मदद कर सकता है, और जब आप नियमित अभिव्यक्तियों का प्रयोग कर सहज हो जाते हैं तो यह और अधिक शक्तिशाली हो जाता है। तकनीकी विवरण grep नामित इनपुट फ़ाइलें (या मानक इनपुट की खोज करता है यदि कोई फ़ाइल नामित नहीं है, या यदि कोई एकल डैश (-) फ़ाइल नाम के रूप में दिया गया है) दिए गए PATTERN के लिए मैच वाले पंक्तियों के लिए। डिफ़ॉल्ट रूप से, grep मिलान लाइन प्रिंट करता है। इसके अलावा, तीन प्रकार के कार्यक्रम egrep। fgrep और rgrep उपलब्ध हैं: egrep grep - E चलने के समान है इस मोड में, grep आपके PATTERN स्ट्रिंग का एक विस्तारित नियमित अभिव्यक्ति (ईआरई) के रूप में मूल्यांकन करता है। आजकल, पूर्व नियमित नियमित अभिव्यक्ति से बहुत अधिक विस्तार नहीं होता है, लेकिन ये अभी भी बहुत उपयोगी हो सकते हैं। विस्तारित नियमित अभिव्यक्तियों के बारे में अधिक जानकारी के लिए, मूल बनाम विस्तारित नियमित अभिव्यक्तियां देखें। नीचे। fgrep grep - F चलने के समान है इस मोड में, grep एक निश्चित स्ट्रिंग के रूप में आपके PATTERN स्ट्रिंग का मूल्यांकन करता है mdash आपके स्ट्रिंग में प्रत्येक अक्षर का शाब्दिक व्यवहार किया जाता है उदाहरण के लिए, यदि आपकी स्ट्रिंग में तारांकन () होता है, तो grep उसे वाइल्डकार्ड के रूप में व्याख्या करने के बजाय वास्तविक एस्टेरीक के साथ मेल करने का प्रयास करेगा। यदि आपकी स्ट्रिंग में कई लाइनें हैं (यदि इसमें नई लाइनें हैं), तो प्रत्येक पंक्ति को एक निश्चित स्ट्रिंग माना जाएगा, और उनमें से कोई एक मैच ट्रिगर कर सकता है। rgrep grep - r चलने के समान है इस मोड में, grep उसकी खोज को बारंबार रूप से प्रदर्शन करेगा यदि यह एक निर्देशिका का सामना करता है, तो वह उस निर्देशिका में जाकर खोज जारी रखेगी। (प्रतीकात्मक लिंक को अनदेखा कर दिया जाता है यदि आप उन निर्देशिकाओं को खोजना चाहते हैं जो प्रतीकात्मक रूप से जुड़े हुए हैं, तो आपको इसके बजाय - R विकल्प का उपयोग करना चाहिए)। पुराने ऑपरेटिंग सिस्टम में, egrep fgrep और rgrep अपने स्वयं के exectuables के साथ अलग कार्यक्रम थे आधुनिक प्रणालियों में, इन विशेष कमांड के नाम केवल उचित झंडे सक्षम करने के साथ grep के शॉर्टकट हैं वे कार्यात्मक रूप से बराबर हैं सामान्य विकल्प कमांड लाइन विकल्पों का सारांश संक्षेप में एक सहायता संदेश प्रिंट करें, और बाहर निकलें। यदि संभव हो तो, डिफ़ॉल्ट रीड सिस्टम कॉल की बजाय इनपुट पढ़ने के लिए एमएमएपी सिस्टम कॉल का उपयोग करें कुछ परिस्थितियों में, - ममप की पैदावार बेहतर प्रदर्शन होती है। हालांकि, - मैप अपरिभाषित व्यवहार (कोर डंपों सहित) के कारण हो सकता है अगर grep ऑपरेटिंग हो रही है, या यदि कोई IO त्रुटि होती है तो इनपुट फ़ाइल सिकुड़ती है। द्विआधारी के रूप में फाइल (एस) का इलाज करें डिफ़ॉल्ट रूप से, MS-DOS और MS-Windows के तहत, grep फाइल से पहले 32KB पढ़ने की सामग्री को देखकर फाइल प्रकार को अनुमान लगाता है। यदि grep फ़ाइल का निर्णय लेता है तो एक पाठ फ़ाइल है, यह सीआर अक्षरों को मूल फ़ाइल सामग्री से (नियमित अभिव्यक्ति के साथ और सही ढंग से काम करने के लिए) स्ट्रिप्स करता है निर्दिष्ट करने वाली - यू इस अनुमानित कार्य को ओवरराइल करता है, जिससे सभी फाइलें पढ़ने के लिए और मेलिंग तंत्र शब्दशः को पारित हो जाती हैं यदि फ़ाइल प्रत्येक पंक्ति के अंत में सीआरएलएफ जोड़े के साथ एक पाठ फ़ाइल होती है, तो यह कुछ नियमित अभिव्यक्तियों को विफल करने के लिए कारण होगा। इस विकल्प का एमएस-डॉस और एमएस-विंडोज के अलावा अन्य प्लेटफॉर्म पर कोई प्रभाव नहीं है इनपुट को लाइनों के एक सेट के रूप में मानें, प्रत्येक एक शून्य के बाइट (एएससीआईआईएल NUL वर्ण) की बजाय एक न्यूलाइन के द्वारा समाप्त हो गया - Z या --null विकल्प की तरह, इस विकल्प का उपयोग क्रमशः- z जैसे कमांड के साथ किया जा सकता है ताकि मनमानी फ़ाइल नामों को संसाधित किया जा सके। नियमित अभिव्यक्ति एक नियमित अभिव्यक्ति एक पैटर्न है जो तारों के एक सेट का वर्णन करता है। रेग्युलर एक्सप्रेशंस छोटे समीकरणों को संयोजित करने के लिए विभिन्न ऑपरेटरों का उपयोग करके अंकगणितीय अभिव्यक्तियों के लिए समान रूप से निर्मित होते हैं। grep नियमित अभिव्यक्ति वाक्यविन्यास के तीन अलग-अलग संस्करणों को समझता है: quotbasicquot (BRE), quotextendedquot (ERE) और quotperlquot (PRCE) जीएनयू ग्रेप में बुनियादी और विस्तारित वाक्यविन्यास के बीच उपलब्ध कार्यक्षमता में कोई अंतर नहीं है अन्य कार्यान्वयन में, बुनियादी नियमित अभिव्यक्ति कम शक्तिशाली हैं। निम्नलिखित विवरण बुनियादी नियमित अभिव्यक्ति के लिए विस्तारित नियमित अभिव्यक्ति अंतर के लिए लागू होता है, बाद में संक्षेपित किया जाता है पर्ल रेगुलर एक्सप्रेशंस अतिरिक्त कार्यक्षमता देते हैं। मौलिक बिल्डिंग ब्लॉक्स नियमित अभिव्यक्ति होते हैं जो एक एकल वर्ण से मेल खाते हैं। सभी अक्षरों और अंकों वाले अधिकांश वर्ण, नियमित रूप से अभिव्यक्ति होते हैं जो स्वयं का मिलान करते हैं। विशेष अर्थ वाले किसी भी मेटा-वर्ण को बैकस्लैश के साथ पूर्ववर्ती करके उद्धृत किया जा सकता है। अवधि (।) किसी एकल वर्ण से मेल खाती है। कैरेक्टर क्लासेस और ब्रैकेट एक्सप्रेशन एक ब्रैकेट एक्स्प्रेशन, उन अक्षरों की एक सूची है, जो उनसे जुड़े हैं। यह उस सूची में किसी भी एक अक्षर से मेल खाता है यदि सूची का पहला अक्षर कैरेट है तो वह उस सूची से किसी भी वर्ण से मेल नहीं खाता है। उदाहरण के लिए, नियमित अभिव्यक्ति 0123456789 किसी एकल अंक से मेल खाती है। ब्रैकेट अभिव्यक्ति के भीतर, एक श्रेणी अभिव्यक्ति में दो वर्ण एक हाइफ़न से अलग होते हैं। यह किसी भी एक अक्षर से मेल खाता है जो दो अक्षरों के बीच की तरह शामिल है, जो कि लोकेल संकलन अनुक्रम और वर्ण सेट का उपयोग करते हैं। उदाहरण के लिए, डिफ़ॉल्ट सी लोकेल में, ए-डी एबीसीडी के समतुल्य है। शब्दकोशों में कई लोकेल वर्णों को क्रमबद्ध करते हैं, और इन लोकेल में ए-डी आमतौर पर एबीसीडी के बराबर नहीं होता है जो कि यह एक बीबीसीसीडीडी के बराबर हो सकता है उदाहरण के लिए। ब्रैकेट एक्सप्रेशन के पारंपरिक व्याख्या प्राप्त करने के लिए, आप LCALL परिवेश चर को मान सी में सेट करके सी लोकेल का उपयोग कर सकते हैं। अंत में, वर्णों के कुछ नामित कक्षाएं ब्रैकेट एक्सप्रेशन के तहत पूर्वनिर्धारित हैं, निम्नानुसार। उनके नाम आत्म व्याख्यात्मक हैं, और वे हैं: alnum:। : अल्फा:। : cntrl:। :अंक: । : ग्राफ:। : कम:। : प्रिंट:। : punct:। : अंतरिक्ष:। : ऊपरी:। और: xdigit:। उदाहरण के लिए,: alnum: वर्तमान स्थान में संख्याओं और अक्षरों के चरित्र वर्ग का मतलब है। सी लोकेल और एएससीआईआई वर्ण सेट एन्कोडिंग में, यह 0- 9 ए-ज़ा-ज़ के समान है। (ध्यान दें कि इन वर्ग के नामों में ब्रैकेट प्रतीकात्मक नामों का हिस्सा हैं, और ब्रैकेट अभिव्यक्ति को विभाजित करने वाले कोष्ठकों के अतिरिक्त शामिल होना चाहिए।) अधिकांश मेटा-वर्ण ब्रैकेट एक्सप्रेशंस के अंदर अपना विशेष अर्थ खो देते हैं। यह सूची में सबसे पहले एक शाब्दिक स्थान को शामिल करने के लिए। इसी प्रकार, एक शाब्दिक स्थान को कहीं भी शामिल करना है, लेकिन पहले। अंत में, एक शाब्दिक शामिल करने के लिए - इसे अंतिम रूप दें कैरेट और डॉलर के चिह्न मेटा-वर्ण होते हैं जो क्रमशः रिक्त स्ट्रिंग से एक पंक्ति की शुरुआत और अंत में मेल खाते हैं। बैकस्लैश कैरेक्टर और स्पेशल एक्सप्रेशंस प्रतीक एलटी और जीटी क्रमशः रिक्त स्ट्रिंग से एक शब्द के आरंभ और अंत में मेल खाते हैं। प्रतीक बी एक शब्द के किनारे खाली रिक्त स्ट्रिंग से मेल खाता है, और बी रिक्त स्ट्रिंग के साथ मेल खाता है, जो कि किसी शब्द के किनारे नहीं है। प्रतीक w इसके लिए एक पर्याय है: alnum: और डब्ल्यू के लिए एक पर्याय है: alnum:। पुनरावृत्ति एक नियमित अभिव्यक्ति का एक कई दोहराव ऑपरेटरों द्वारा पीछा किया जा सकता है: यदि आप फ़ाइल की एक्सटेंशन या पैटर्न जानती हैं, तो एक अन्य विधि का उपयोग करना है - विकल्प शामिल करें: आप --exclude के साथ बाहर निकालने के लिए फ़ाइलों का उल्लेख भी कर सकते हैं। यदि आप अक्सर कोड के माध्यम से खोज करते हैं, एजी (रजत खोजकर्ता) grep का एक तेज़ विकल्प है, जो खोज कोड के लिए अनुकूलित है। उदाहरण के लिए, डिफ़ॉल्ट रूप से इसकी पुनरावर्ती और स्वचालित रूप से फ़ाइलों और निर्देशिकाओं की सूची को अनवरोधित करता है। तो आपको एक ही बोझिल बहिष्कार के विकल्प को पास करने के लिए grep या खोजने के लिए नहीं है 30 दिसंबर को 22:59 को उत्तर दिया मुझे लगता है कि यह एक होना चाहिए। अंत में, 22:00 बजे 22:00 बजे एक राक्षस Raphael नहीं लिनक्स amp के साथ आता है कि grep के साथ महान काम करता है, लेकिन एएक्स के साथ आता है कि एक के साथ। ndash को रोकना 31 जनवरी 13:20 पर होना चाहिए --includablyot. txtquot ndash Krzysztof Wolny Dec 18 13 at 13:28 KrzysztofWolny: बजाय काम करता है बस Ubuntu पर ठीक है पीएस: वह एक बैकटीकैट स्पेस माना जाता है, लेकिन एसओ मार्कडाउन पार्सर विफल रहा। ndash Dan Dascalescu फ़रवरी 1 9 14 9:08 में - exec विकल्प - प्रतीक फ़ाइल नाम का एक संदर्भ है जो वर्तमान में खोज उपकरण द्वारा पाया जाता है (जो कि हमने पाया फ़ाइल नाम के साथ कुछ करना है), - EXE विकल्प को प्रतीक के साथ समाप्त कर दिया जाना चाहिए (exec आज्ञाओं के समापन को चिह्नित करने के लिए), लेकिन क्योंकि यह सभी एक शेल में चल रहा है जो कि प्रतीक को बचाना चाहिए। और अंत में - प्रिंट विकल्प स्क्रीन पर मिले फाइलनाम प्रिंट करने के लिए टूल को ढूंढने देता है। ndash rook अप्रैल 27 16 पर 9:47 एजी अब यह करने के लिए मेरा पसंदीदा तरीका है githubggreerthesilversearcher। इसका मूल रूप से एक जैसा काम है लेकिन कुछ और अनुकूलन के साथ। 21 मई को 23:37 पर उत्तर दिया, सिर्फ फाइलें उपयोगी हो सकती हैं, 3 दिसंबर को 17:48 पर यह काम करना चाहिए: 1 9 दिसंबर को 7:20 बजे उत्तर दिया गया यूनिक्स के लिए: यूनिक्स सर्वर पर एक फ़ाइल ढूंढें, लिनक्स सर्वर पर एक फ़ाइल का पता लगाया गया Jan 29 16 14:31 पर यदि आप केवल वास्तविक निर्देशिका का अनुसरण करना चाहते हैं, और प्रतीकात्मक लिंक नहीं चाहते हैं, यदि आप प्रतीकात्मक लिंक के साथ-साथ वास्तविक निर्देशिकाओं का पालन करना चाहते हैं अनंत याददाश्त के बारे में सावधान रहें), चूंकि आप फिर से grep की कोशिश कर रहे हैं, निम्न विकल्प भी आपके लिए उपयोगी हो सकते हैं: यदि आप वर्तमान निर्देशिका या किसी उपनिर्देशिका में डार्थ वाडर वाले सभी फाइलों को ढूंढना चाहते हैं और फ़ाइल नाम और रेखा संख्या को कैप्चर करना चाहते हैं, लेकिन पुनरावर्तन को प्रतीकात्मक लिंक का पालन नहीं करना चाहते हैं, तो आदेश होगा यदि आप निर्देशिका में शब्द बिल्ली के सभी उल्लेख खोजना चाहते हैं और वर्तमान में आप निर्देशिका में हैं और आप फ़ाइल नाम पर कब्जा करना चाहते हैं, लेकिन किसी भी आवृत्ति की रेखा संख्या नहीं स्ट्रिंग का बिल्लियों, और आप चाहते हैं कि वे पुनरावर्ती सांकेतिक लिंक्स का पालन करने के लिए चाहते हैं, तो आप निम्न चल रहे grep --help में से किसी एक को सिंबॉलिक लिंक का एक संक्षिप्त परिचय दे सकते हैं, यह उत्तर पढ़ने वाले और उनके लिए मेरे संदर्भ से उलझन में किसी के लिए: nixtutorfreebsdunderstanding - प्रतीकात्मक-लिंक यदि आप एक निर्देशिका की संरचना से सभी फाइलों में एक विशेष सामग्री की तलाश कर रहे हैं, तो आप खोज का उपयोग कर सकते हैं क्योंकि यह अधिक स्पष्ट है कि आप क्या कर रहे हैं: नोट करें कि - एल (एल के डाउनकेस) फ़ाइल का नाम दिखाता है जिसमें ये पाठ। अगर आप इसके बजाय मैच खुद प्रिंट करना चाहते हैं, तो इसे हटा दें। या मैच के साथ फ़ाइल को पाने के लिए - H का उपयोग करें सभी एक साथ, अन्य विकल्प हैं: जहां - n लाइन संख्या प्रिंट करता है। 30 नवंबर को 16:19 उत्तर दिया- एक्सचेंज के बजाय अनावश्यक उपयोग से बचने और एक्सएक्स के बजाय उपयोग करने के लिए दोनों ही समाधान खोजने के लिए ऊपर-मतदान किया गया जिससे अनावश्यक प्रक्रिया की शुरूआत के टन से बचने -) ndash ShadowRanger Jan 30 16 at 8:08 मेरे आईबीएम एएक्स सर्वर (ओएस संस्करण: एएक्स 5.2) में, उपयोग करें: इस तरह से फ़ाइल में pathfile नाम और रिश्तेदार लाइन संख्या प्रिंट की जाएगी: 2865: विवरण। stringYouWannaFind वैसे भी, यह मेरे लिए काम करता है ) खैर, कोई एक्सगर्स्ट विशेष रूप से एक arglist के लिए एक पाइप के तर्क को परिवर्तित करने के लिए है, लेकिन हाँ, यह सच है कि - s एंडर-एल के साथ उपयोग किए जाने पर आधुनिक एक्सग्रेम्स कई कमान चालानों को तोड़कर बहुत लंबे अरगी से निपट सकते हैं, लेकिन यह डिफ़ॉल्ट रूप से इस तरह से कॉन्फ़िगर नहीं किया गया है (और उपरोक्त उत्तर में से किसी में नहीं)। एक उदाहरण के रूप में: ढूंढें - प्रकार प्रकार xargs - l 100 grep जो कुछ भी ndash m. thome 23 अप्रैल 15 पर 13:56 POSIX xargs पर होगा जो मंच बॉक्स से इस व्यवहार को बाहर करने के लिए मानकीकृत है। quot; xargs उपयोगिता कमांड लाइन की लंबाई को सीमित कर देगी जैसे कि जब कमांड लाइन लागू की जाती है, संयुक्त तर्क और पर्यावरण सूची। -2048 बाइट्स से अधिक नहीं होगा। सॉट ट्रिपली 23 अप्रैल 15 15:42 grep रिकर्सिव

No comments:

Post a Comment