2010-05-21 12 views
44

मैं निम्न आदेश का उपयोग कर रहा उपनिर्देशिका में सामान grep कोकैसे पूरे शब्द

find . | xargs grep -s 's:text' 

हालांकि के लिए grep के लिए, यह भी पाता है <s:textfield name="sdfsf"...../>

की तरह सामान मैं क्या कर सकता है कि से बचने के लिए तो यह सिर्फ पाता <s:text name="sdfsdf"/>

या उस बात के लिए की तरह सामान .... भी <s:text somethingElse="lkjkj" name="lkkj"

मूल रूप सेपाता हैऔर name एक ही लाइन पर होना चाहिए ....

+17

किसी को भी "कैसे पूरी ** दुनिया के लिए grep के लिए **" के रूप में शीर्षक पढ़ी करना चाहिए? – Earlz

+1

lulz के लिए :) – josh

+7

@Earlz, नहीं, ज्यादातर, क्योंकि मैं "grep पूरा शब्द" Googled। –

उत्तर

49

आप -w विकल्प यह निर्दिष्ट करने के लिए चाहते हैं कि यह एक शब्द का अंत है।

find . | xargs grep -sw 's:text'

0

यदि आप शेष टेक्स्ट भाग को फ़िल्टर करना चाहते हैं, तो आप यह कर सकते हैं।

xargs grep -s 's:text '

यह पिछले टी के बाद एक स्थान के साथ ही s:text उदाहरणों खोजना चाहिए। यदि आपको s:text उदाहरण मिलते हैं जिनके पास केवल नाम तत्व है, तो या तो अपने परिणाम को grep अभिव्यक्ति पर पाइप करें, या केवल आवश्यक तत्वों को फ़िल्टर करने के लिए रेगेक्स का उपयोग करें।

+0

क्या होगा यदि "पाठ" आउटपुट के अंत में है? क्या यह आपके समाधान में नहीं छोड़ा जाएगा? – pkuszewski

22

आप रिकर्सिवली ग्रेप खोज बनाकर xargs आदेश छोड़ सकते हैं। और आपको आमतौर पर 'ध्वज' की आवश्यकता नहीं होती है। इसलिए:

grep -wr 's:text' 
23

उपयोग \b "शब्द सीमाओं" है, जो केवल संपूर्ण शब्दों पर अपनी खोज को मैच कर देगा पर मैच के लिए।

grep -r "\bSTRING\b" 

रंग और लाइन नंबर जोड़ने की तरह कुछ

तो अपने ग्रेप लगेगा मदद कर सकता है भी

grep --color -rn "\bSTRING\b" 

http://www.regular-expressions.info/wordboundaries.html से:

तीन अलग अलग स्थानों है कि के रूप में योग्य हैं शब्द सीमाएं:

  • स्ट्रिंग में पहले वर्ण से पहले, यदि पहला अक्षर शब्द वर्ण है।
  • स्ट्रिंग में अंतिम वर्ण के बाद, यदि अंतिम वर्ण एक शब्द वर्ण है।
  • स्ट्रिंग में दो वर्णों के बीच, जहां एक शब्द चरित्र है और दूसरा शब्द वर्ण नहीं है।
0

आप rg की कोशिश कर सकते, https://github.com/BurntSushi/ripgrep:

rg -w 's:text' . 

यह

+0

हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, लेकिन यहां उत्तर के आवश्यक हिस्सों को शामिल करना बेहतर है और संदर्भ के लिए लिंक प्रदान करना बेहतर है। लिंक किए गए पृष्ठ में परिवर्तन होने पर लिंक-केवल उत्तर अमान्य हो सकते हैं। - [समीक्षा से] (/ समीक्षा/कम गुणवत्ता वाली पोस्ट/17780631) –

+1

मैंने उत्तर प्रदान किया: आरजी-डब्ल्यू: टेक्स्ट '। – ms4720