2011-05-31 13 views
6

क्या यह संभव है (और कैसे) एके के साथ चेन पैटर्न (लिनक्स के कुछ वितरण पर एएके-जीईआर) जैसे कि मुझे grep के साथ उपयोग किया जाता है?ack-grep के साथ कई पैटर्न?

उदा।

grep "foo" somefile.c | grep -v "bar" 

... "foo" के साथ सभी लाइनों से मेल खाने के लिए लेकिन "बार" के बिना।

उत्तर

10

ack पर्ल नियमित अभिव्यक्ति का उपयोग करता है, और उन की अनुमति देने के lookahead assertions:

^(?!.*bar).*foo.*$ 

एक लाइन है कि foo हैं लेकिन उसकी bar शामिल नहीं है से मेल खाएगी।

मैं ack के उपयोग से परिचित नहीं हूँ, लेकिन कुछ इस तरह काम करना चाहिए:

ack '^(?!.*bar).*foo.*$' myfile 
+0

यदि फ़ाइल 'bar' उस में' foo के लिए खोज नहीं है, इस के साथ समस्या यह है 'भी कोशिश नहीं की है। –

+0

@ एंथनी हैट्टोपोलोस: यह एक समस्या क्यों होगी? –

+0

ओपी foo के साथ लाइनों की तलाश में है। और फिर वे उन लाइनों को बार पर वापस नहीं करना चाहते हैं। मुझे लगता है कि ऐसा ही हुआ कि फाइल में बार था, कि वे जो चाहते थे वो मिला। हालांकि यह केवल foo के साथ फ़ाइलों को वापस नहीं करेगा। मान लें कि मैं सभी 'foo() 'की तलाश में हूं लेकिन' foo (bar) 'नहीं, मैं अभी भी अपने सभी अन्य * foos * चाहता हूं। मेरे मामले में 'somefile.c' एक संपूर्ण परियोजना है। हालांकि यह उल्लेख करने लायक था। –

संबंधित मुद्दे