grep

2010-09-09 19 views
37

में ब्रांड्स से बचने के लिए कैसे मैं निर्देशिका में सभी जावास्क्रिप्ट फ़ाइलों में एक फ़ंक्शन कॉल 'init()' के लिए grep करना चाहता हूं। मैं grep का उपयोग करके यह कैसे करूँ?grep

विशेष रूप से, मैं ब्रांड्स, () से कैसे बचूं?

उत्तर

37

यह निर्भर करता है। आप नियमित रूप से ग्रेप का उपयोग करते हैं, तो आप बच नहीं है:

echo '(foo)'|grep '(fo*)' 

आप वास्तव में आप समूह के रूप में कोष्ठक का उपयोग करना चाहते हैं से बचने के लिए किया है।

आप extended regular expressions उपयोग करते हैं, आप से बचने के है:

echo '(foo)'|grep -E '\(fo*\)' 
+1

जब मैं निर्देशिका में grep -rin init() * का उपयोग करता हूं तो यह अप्रत्याशित टोकन के पास वाक्यविन्यास त्रुटि की शिकायत करता है (मैं इसे कैसे ठीक कर सकता हूं। –

+0

मुझे खेद है, मुझे समझ में नहीं आ रहा है। मेरे पास कुछ जावास्क्रिप्ट फ़ाइलें हैं init() फ़ंक्शन उन में कुछ स्थानों पर बुलाया जाता है। मैं यह जानना चाहता हूं कि निर्देशिका में grep -rin init() * का उपयोग करके सभी init() कहलाता है .. यह अमान्य वाक्यविन्यास के बारे में शिकायत करता है (मैं कैसे बचूं ( –

+3

@ मेघा, बस स्पष्टीकरण के लिए, यह एक खोल त्रुटि थी क्योंकि आपने रेगेक्स को उद्धृत नहीं किया था। –

4
$ echo "init()" | grep -Erin 'init\([^)]*\)' 
1:init() 

$ echo "init(test)" | grep -Erin 'init\([^)]*\)' 
1:init(test) 

$ echo "initwhat" | grep -Erin 'init\([^)]*\)' 
+0

यह गलत है। यह "आसानी से" से मेल खाएगा, क्योंकि डिफ़ॉल्ट रूप से बैकस्लेश किए गए माता-पिता कैप्चरिंग समूह बनाते हैं। जैसा कि मैंने उपरोक्त कहा है, आप नियमित grep के साथ माता-पिता से बचें नहीं। –

+0

मेरा मानना ​​है कि यह ठीक है क्योंकि '-ई' egrep के बराबर है। – gkanwar

1

ले जाएँ अपने रूट निर्देशिका में (यदि आप जानते हैं जहाँ JavaScript फ़ाइलों हैं)। फिर निम्नलिखित करें।

grep 'init()' *.js 
+0

सभी उप-फ़ोल्डर्स में रिक्रूली में grep करने के लिए, पैरामीटर जोड़ें- – hejiaming007

18

आप "() init" वास्तव में स्ट्रिंग के लिए खोज करना चाहते हैं तो fgrep "init()" या grep -F "init()" का उपयोग करें।

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