किसी पाठ में स्थान कैसे खोजें। grep का उपयोग कर रहे हैं?


13

पाठ में एक स्थान को कैसे प्राप्त करें?

cat a.txt| grep ' '

या

cat a.txt| grep '\s '

7
catदोनों ही मामलों में गंभीर उपयोग । पहला लिखा जा सकता था grep ' ' a.txt, दूसरा इसी तरह बदल गया।
MadHatter

1
ध्यान दें कि \sटैब, रिटर्न, वर्टिकल टैब, फॉर्म फीड और तकनीकी रूप से, न्यूलाइन से भी मेल खाता है। यदि आप केवल स्पेस और टैब का मिलान करना चाहते हैं, तो उपयोग करें [[:blank:]]या [ \t]
अगली सूचना तक रोक दिया गया।

gnu grep का उपयोग करके, आप मैचों की संख्या ( -mविकल्प) को एक तक सीमित कर सकते हैं ...
sendmoreinfo

यह अधिक सरल है egrep "s" a.txt

जवाबों:


6

यदि आप अपने प्रश्न में केवल एक स्थान के लिए टटोलना चाहते हैं, तो आप कुछ इस तरह का उपयोग करेंगे:

grep -e '^\s[^\s]' -e '[^\s]\s$' -e '[^\s]\s[^\s]' a.txt

या POSIX वेरिएंट के लिए:

grep -e '^ [^ ]' -e '[^ ] $' -e '[^ ] [^ ]' a.txt

या कम पठनीय POSIX संस्करण:

grep '\(^\|[^ ]\)\ \([^ ]\|$)' a.txt

यह मानते हुए कि आप उन लाइनों को बाहर करना चाहते हैं जिनमें एक से अधिक आसन्न स्थान हैं, इसके लिए स्पष्ट रूप से एक स्थान की आवश्यकता होती है, एक स्थान से पहले नहीं और एक स्थान का पालन नहीं करना चाहिए।

इसके अलावा, यह ध्यान देने योग्य है कि grep के सभी संस्करण नियमित अभिव्यक्ति नियंत्रण का समर्थन नहीं करते हैं।


1
आप पिछले उदाहरण से उन सभी बैकस्लैशों को छोड़ सकते हैं और पोसिक्स-निर्दिष्ट -Eविकल्प का उपयोग करके पठनीयता में सुधार कर सकते हैं जो विस्तारित रेगेक्स को सक्षम करता है। grep -E '(^|[^ ]) ([^ ]|$)' a.txtकिसी भी मामले में, अंतरिक्ष से पहले बैकस्लैश की आवश्यकता नहीं है और अंतिम समापन कोष्ठक से पहले एक लापता है। इसके अलावा, grepउस समझ के संस्करणों के लिए \s, आप गैर-स्थान के [^\s]लिए अभिव्यक्ति को छोटा कर सकते हैं\S
अगली सूचना तक रोक दिया गया।

हालांकि यह भी काम करता है, [[: कोरा:]]
Emax

4

मुझे लगता है मुझे यह मिल गया है:

grep  "\+[[:space:]]\+" a.xml

1

वेरिएंट 2 में केवल दो स्पेस मिलेंगे। यदि आप '\s'इसके बजाय उपयोग करते हैं, तो दोनों वेरिएंट काम करेंगे।

आप इसे आसानी से परख सकते हैं, इसलिए आपका वास्तविक प्रश्न क्या है?


1
केवल दो रिक्त स्थान क्यों खोजे? मुझे लगता है कि यह किसी भी स्थान से मेल खाता है।
congonglm

1
@Gnouc: वेरिएंट 2 जैसा कि उन्होंने लिखा है कि यह '\s 'एक पंक्ति में कम से कम दो स्थानों से मेल खाएगा, क्योंकि उन्होंने चरित्र समूह के बाद एक अंतरिक्ष चरित्र जोड़ा \s
स्वेन

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