Grep में दोहरे उद्धरण से बचिए


96

मैं अंदर दोहरे उद्धरण चिह्नों के साथ grep करना चाहता था। एक सरल उदाहरण देने के लिए:

echo "member":"time" | grep -e "member\""

जो मेल नहीं खाता। मेरे द्वारा यह कैसे किया जा सकता है?

जवाबों:


139

समस्या यह है कि आप इनपुट स्ट्रिंग से ठीक से बच नहीं रहे हैं, कोशिश करें:

echo "\"member\":\"time\"" | grep -e "member\""

वैकल्पिक रूप से, आप एकल उद्धरणों के भीतर अनपेक्षित दोहरे उद्धरणों का उपयोग कर सकते हैं:

echo '"member":"time"' | grep -e 'member"'

यह वरीयता का मामला है जो आपको स्पष्ट लगता है, हालांकि दूसरा दृष्टिकोण आपको एकल उद्धरणों (जैसे ssh 'cmd') के एक और सेट के भीतर अपनी कमांड को घोंसले से रोकता है ।


1
यह काम करेगा ? echo '"member":"time"' |grep -e "member"परीक्षण नहीं किया
चींटी

लगभग। इसे होना जरूरी है echo '"member":"time"' |grep -e 'member"'। दोनों दृष्टिकोण मान्य हैं, लेकिन मैं स्पष्ट रूप से बचना पसंद करता हूं, क्योंकि इरादा अधिक स्पष्ट है।
cmh

हाँ, शायद अपना उत्तर संपादित करें यदि आप किसी को यह पसंद करते हैं (+1)
चींटी

यह (बैकस्लैश का उपयोग करके) मेरे लिए विंडोज पर काम नहीं करता है। वास्तव में यह आंशिक रूप से काम करता है, लेकिन मैं आउटपुट को किसी फ़ाइल में पुनर्निर्देशित करने में असमर्थ हूं।
रेडिम सेर्नज

@RadimCernej मैं एक विशेष सवाल पूछते हुए कहता हूं - यह इस के दायरे से बाहर लगता है।
सेमीह
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.