एक उद्धरण के साथ ग्रंथों को खोजने के लिए grep का उपयोग कर रहे हैं?


14

मैं ubuntu 12.04 में एम्बेडेड टर्मिनल के साथ gedit टेक्स्ट एडिटर का उपयोग कर रहा हूं। मैं कुछ पाठ का उपयोग करके खोज करने की कोशिश कर रहा हूं grep। मैं कोड की इस पंक्ति को खोजना चाहता हूं

'type' => 'select'

मैंने कोशिश की:

grep -r '\'type\' => \'select\''

लेकिन grepकोई परिणाम नहीं लौटाया।

तो क्या कोई मुझे बता सकता है कि ऊपर दिए गए कोड की खोज कैसे करें?

जवाबों:


17

अपने खोज स्ट्रिंग को दोहरे उद्धरण चिह्नों से घेरें:

grep "'type' => 'select'"

7

आप सिंगल कोट्स के भीतर दिखाई देने वाले सिंगल कोट्स से बच नहीं सकते। जैसा कि [बाश मैनुअल] में बताया गया है :( http://www.gnu.org/software/bash/manual/bashref.html#Single-Quotes ):

एकल उद्धरणों ('' '') में वर्णों को शामिल करना उद्धरणों के भीतर प्रत्येक वर्ण के शाब्दिक मूल्य को संरक्षित करता है। एकल उद्धरण के बीच एक एकल उद्धरण नहीं हो सकता है, तब भी जब एक बैकस्लैश द्वारा पूर्ववर्ती हो

इसलिए, आपको विभिन्न तरीकों का उपयोग करना होगा:

  1. दोहरे उद्धरण चिह्नों का उपयोग करें:

    grep  "'type' => 'select'" file 
    
  2. यदि आप अनावश्यक जटिल समाधान पसंद करते हैं:

    grep  "'"type"'"\ =\>\ "'"select"'" file 
    
  3. आप हमेशा एकल उद्धरण निर्दिष्ट करने के बजाय किसी भी एकल वर्ण की खोज कर सकते हैं:

    grep  '.type. => .select.' file 
    

लेकिन बस उपयोग करें ", यह चीजों को और अधिक सीधा बनाता है।


क्या होगा यदि मैं जो स्ट्रिंग खोज रहा हूं वह php फ़ाइल में है और इसमें चर हैं? मैं वास्तव में इससे जूझ रहा हूं।
ऑब्रे रॉबर्टसन

@AubreyRobertson मुझे ठीक से जवाब देने के लिए एक उदाहरण की आवश्यकता होगी। यदि आप स्ट्रिंग की तरह कुछ खोजना चाहते हैं $var, तो आप grep '$var' file.phpसिंगल कोट्स में कर सकते हैं । अधिक विवरण के लिए, कृपया एक नया प्रश्न पोस्ट करें और मुझे एक टिप्पणी दें। मुझे मदद करके खुशी होगी।
टेराडॉन

मैं यह समझ गया। यह डॉलर के संकेत नहीं थे जो मेरे grep को टक्कर दे रहे थे, यह सरणी संदर्भ (वर्ग कोष्ठक) था क्योंकि grep regex के लिए उन का उपयोग करता है। यह वह रेखा है जिसे मैं टटोलने की कोशिश कर रहा था: $output = $info['function']($variables); मुझे बस उन्हें डबल बैकस्लैश के साथ ठीक से बचना था। सभी के कहने और किए जाने के बाद यह मेरा grep कमांड है:targetstring="\$output = \$info\\['function'\\](\$variables);" targetlinenumber=`grep -n "$targetfile" -e "$targetstring" | cut -d :f 1`
ऑब्रे रॉबर्टसन

1

cd निर्देशिका में आपकी .txt फ़ाइल है

cd /path 

फिर :

आप उपयोग कर सकते हैं grep "'type' => 'select'" name.txt

या:

`grep "'type' => 'select'" /path/file.txt

आउटपुट:

यहां छवि विवरण दर्ज करें


3
सवाल केवल एकल उद्धरण, निर्देशिका संरचना या किसी grepअन्य (थोड़ा अप्रासंगिक) कार्यक्षमता की चिंता करता है।
क्रिस

@ क्रिस, वास्तव में, -rविकल्प के साथ (जैसा कि ओपी लिखते हैं), फ़ाइल नाम आवश्यक नहीं है।
ब्रैडी ट्रेनर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.