2013-03-15 7 views
6

पल मैं का उपयोग इसGrep दोहरे उद्धरण चिह्नों

grep user file | grep -e "[\'\"]" 

इस फ़ाइल की आवश्यकता की धारा के लिए मिलता है और डबल कोट्स को उजागर करेगा पर दोहरे उद्धरण चिह्नों के अंदर एक स्ट्रिंग grep की कोशिश के अंदर स्ट्रिंग लेकिन यह नहीं देंगे दोहरे उद्धरण में डंक

उत्तर

9

ऐसा करने का प्रयास करें:

$ cat aaaa 
foo"bar"base 
$ grep -oP '"\K[^"\047]+(?=["\047])' aaaa 
bar 

मैं उपयोग उन्नत फिर नज़र चारों ओर gex तकनीकें।

आप उद्धरण भी चाहते हैं:

$ grep -Eo '["\047].*["\047]' 
"bar" 

नोट:

grep "Test" /tmp/junk | tr '"' ' ' 

यह:

\047 

एकल उद्धरण

+0

धन्यवाद यह लगभग काम करता है - आउटपुट स्ट्रिंग के साथ-साथ; डबल कोट – Grimlockz

+0

के बाहर आप उद्धरण भी चाहते हैं? –

+0

न सिर्फ स्टिंग बल्कि उपरोक्त grep का उपयोग करके मुझे देता है; साथ ही ... उदाहरण के लिए इसे आजमाएं उपयोगकर्ता = "बॉबॉप"; – Grimlockz

1

कोशिश की अष्टाधारी ascii प्रतिनिधित्व है rem होगा ove ग्रेप

के उत्पादन से उद्धरण या आप निम्न को आज़मा सकते:

grep "Test" /tmp/junk | cut -d '"' -f 2 

यह परिसीमक के रूप में उद्धरण चिह्नों का उपयोग होगा। बस उस फ़ील्ड को निर्दिष्ट करें जिसे आप चुनना चाहते हैं। इससे आपको अपनी इच्छित जानकारी चुनने की सुविधा मिलती है।

+1

विडंबना यह है कि इनमें से दोनों एक खाली रेखा उत्पन्न करते हैं जब 'grep -o' पर पाइप किया जाता है "[^"] \ + " ', लेकिन 'grep -Eo'"। * "'| tr -d'" '' काम किया। – LoungeKatt

+0

'कट' यहां एक अच्छी पसंद नहीं है क्योंकि जानकारी फ़ील्ड में अलग नहीं है। एक पंक्ति में उद्धरणों की संख्या 1 हो सकती है, 5 हो सकती है, कोई भी नहीं हो सकता है। – SaltyNuts

6
$ cat aaaa 
foo"bar"base 

$ grep -o '"[^"]\+"' 
"bar" 
संबंधित मुद्दे