Grep के साथ एक अंतरिक्ष वर्ण कैसे शामिल करें?


17

मेरे पास उदाहरण के लिए एक फ़ाइल है

$ cat example

kali.pdf
linux.pdf
ubuntu.pdf
example.pdf.
this.pdf
grep .pdf

और जब मैं grepउस लाइन को पाने के लिए उपयोग करता हूं जिसमें पहले एक स्थान है .pdf, तो मैं इसे प्राप्त नहीं कर सकता।

grep *.pdf example

रिटर्न कुछ नहीं, (मैं कहना चाहता हूं, "grep, शून्य या अधिक रिक्त स्थान से पहले मिलान करें .pdf", लेकिन कोई परिणाम नहीं)

और अगर मैं उपयोग करता हूं:

grep i*.pdf example

kali.pdf
linux.pdf
ubuntu.pdf
example.pdf.
this.pdf
grep .pdf

सभी लाइनें वापस आती हैं, क्योंकि मैं कह रहा हूं कि "grep, मुझे iएक या शून्य बार मिलाएं, ठीक है।"

और अंत में:

grep " *.pdf" example

कोई परिणाम नहीं

इस नमूने के लिए, मैं देखना चाहता हूं

grep .pdf 

आउटपुट के रूप में

मेरी सोच में क्या खराबी है?

जवाबों:


31

सुनिश्चित करें कि आप अपनी अभिव्यक्ति का उद्धरण दें। मुझे लगता है कि शेल वर्डप्लायटिंग आपकी समस्याओं में से एक है, लेकिन आपको हमेशा अपने रेगेक्स को उद्धृत करना चाहिए, क्योंकि सभी प्रकार की चीजें अन्यथा गलत हो जाएंगी।

$ grep ' \.pdf' example
grep .pdf

या यदि कई स्थान हो सकते हैं (हम उपयोग नहीं कर सकते हैं *क्योंकि यह उन मामलों से मेल खाएगा जहां पूर्ववर्ती रिक्त स्थान नहीं हैं)

grep ' \+\.pdf' example

+का अर्थ है "पूर्ववर्ती चरित्र का एक या अधिक"। BRE में आपको \इस विशेष फ़ंक्शन को प्राप्त करने के लिए इसके साथ भागने की आवश्यकता है , लेकिन आप इससे बचने के लिए ERE का उपयोग कर सकते हैं

grep -E ' +\.pdf' example 

तुम भी उपयोग कर सकते हैं \sमें grepएक अंतरिक्ष मतलब करने के लिए

grep '\s\+\.pdf' example

हमें शाब्दिक .रूप से बचना चाहिए क्योंकि रेगेक्स का .मतलब किसी भी चरित्र से है, जब तक कि वह चरित्र वर्ग में न हो।


आप पहले थे जिन्होंने ध्यान दिया कि अंतिम पंक्ति में स्थान था।
पायलट 6

@ पायलट 6 धन्यवाद। सवाल थोड़ा उलझन
भरा

प्रश्न को समझने वाले प्रथम के लिए कुछ बिल्ला होना चाहिए ;-)
पायलट 6

@Zanna, क्या इस मामले में कभी भी कुछ भी गलत हो सकता है?
एग्रेप से

@ सल्फ़िश egrep(रेगेक्स शैली के संदर्भ में, afaik) के समान है grep -E, और मेरा मानना ​​है कि हम उत्तरार्द्ध का उपयोग करने के लिए egrepहैं - आदि को कथित तौर पर grepझंडे के पक्ष में
Zanna
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.