दिलचस्प पोस्ट
प्रदर्शन: इनलाइन रीसेट उच्च ऊंचाई और चौड़ाई एक चुटकी का पता लगाने के लिए सबसे सरल तरीका NSMutableArray – केवल विशिष्ट ऑब्जेक्ट प्रकार को रखने के लिए सरणी को बल दें रिवर्स ऑर्डर में जावा में प्रत्येक लूप के लिए कोई क्या कर सकता है? पायथन के साथ एक फ़ाइल में पाठ की जगह स्प्रिंग-जर्सी में इन-मेमोरी यूनिट परीक्षण कैसे करें स्ट्रीम मैनिपुलेटर कैसे काम करते हैं? विंडोज फोन 8.1 – पेज नेविगेशन Google नक्शे में मार्ग के मिडपॉइंट VarBinary बनाम छवि एसक्यूएल सर्वर डेटा प्रकार द्विपदीय डाटा स्टोर करने के लिए? क्यों मेरी $। एएक्सएक्स "प्रीफलाइट अमान्य पुनर्निर्देशित त्रुटि" दिखा रहा है? फ़ाइल का आकार ढूंढना ANTLR4 के साथ एएसटी कैसे बनाएं? त्रुटि: java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter। <Init> (I) वी सी # में एक पैरामीटर के रूप में सिर्फ एक प्रकार से गुजारें

Bash / Grep में एकल उद्धरणों से कैसे बचें?

मैं grep के साथ स्ट्रिंग के लिए खोज करना चाहता हूं जो इस तरह दिखता है:

something ~* 'bla' 

मैंने यह कोशिश की, लेकिन शेल एकल उद्धरण को हटा देता है ..

 grep -i '"something ~* '[:alnum:]'"' /var/log/syslog 

सही खोज क्या होगा?

Solutions Collecting From Web of "Bash / Grep में एकल उद्धरणों से कैसे बचें?"

 grep -i "something ~\* '[[:alnum:]]*'" /var/log/syslog 

मेरे लिये कार्य करता है।

  • इसे शून्य या अधिक-मिलान वाले वर्ण बनाने के बजाय एक शाब्दिक * मैच करने के लिए पहले * से बचें:
    ~* शून्य या अधिक घटनाओं का मिलान करते हुए ~ जबकि
    something बाद ~\* अभिव्यक्ति से मेल खाता है ~*
  • चारों ओर डबल कोष्ठक का उपयोग करें :alnum: ( यहां उदाहरण देखें)
  • आपके एकल उद्धरण चिह्नों के बीच न केवल एक ही चरित्र को मैच करने के लिए [[:alnum::]] बाद * उपयोग करें, लेकिन उनमें से कई
  • एकल उद्धरणों को बचने की ज़रूरत नहीं है क्योंकि वे एक अभिव्यक्ति में निहित हैं जो कि दोहरे उद्धरण चिह्नों द्वारा सीमित हैं।

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

 echo 'And I said, "he said WHAT?"' 

अपेक्षित काम करता है, लेकिन घोंसले के शिकार के एक और स्तर के लिए, अपेक्षित रूप से निम्नलिखित कार्य नहीं करता है:

 echo 'She said, "And I said, \'he said WHAT?\'"' 

इसके बजाय, आपको सिंगल-उद्धृत स्ट्रिंग के बाहर भीतरी एकल उद्धरणों से बचने की आवश्यकता है:

 echo 'She said, "And I said, '\''he said WHAT?'\''"' 

या, अगर आप चाहें:

 echo 'She said, "And I said, '"'"'he said WHAT?'"'"'"' 

यह सुंदर नहीं है, लेकिन यह काम करता है। 🙂

बेशक, अगर आप चीजों को वैरिएबल में डालते हैं तो यह सब मुनाफ़ा है।

 [ghoti@pc ~]$ i_said="he said WHAT?" [ghoti@pc ~]$ she_said="And I said, '$i_said'" [ghoti@pc ~]$ printf 'She said: "%s"\n' "$she_said" She said: "And I said, 'he said WHAT?'" [ghoti@pc ~]$ 

🙂

  • चरित्र वर्गों को [[:alnum:]] (दो ब्रैकेट्स) के साथ निर्दिष्ट किया गया है
  • [[:alnum:]] केवल एक वर्ण से मिलान कर रहा है शून्य या अधिक वर्णों का मिलान करने के लिए [[:alnum:]]*
  • आप केवल " " regex उद्धृत करने के लिए उपयोग कर सकते हैं:

     grep -i "something ~\* '[[:alnum:]]*'" /var/log/syslog 

Matteo

आपकी अभिव्यक्ति के अनुसार ऐसा लगता है कि आप पहले ' का उपयोग कर रहे हैं, यदि आप एकल उद्धरणों से बचना चाहते हैं, तो आप ' उपयोग कर सकते हैं या उनका बच सकते हैं या दोहरे उद्धरणों का इस्तेमाल कर सकते हैं। वर्ग कोष्ठक या तो:

 grep -i "something \~\* '[[:alnum:]]+'" /var/log/syslog 

या

 grep -i 'something ~* \'[[:alnum:]]+\'' /var/log/syslog