2010-03-22 10 views
18

मैं नियमित अभिव्यक्ति मिलान देखने के लिए नेस्टेड उपनिर्देशिकाओं में फ़ाइलों का एक समूह के माध्यम से grep करने की कोशिश कर रहा हूँ; मेरे regex नकारात्मक दिखने की आवश्यकता है।जीएनयू grep के बराबर पाने का सबसे आसान तरीका क्या है जो नकारात्मक दिखने का समर्थन करता है?

पर्ल नकारात्मक दिखता है, लेकिन जहां तक ​​मैं GNU grep doesn't support negative lookbehinds बता सकता हूं।

नकारात्मक दिखने का समर्थन करने वाले जीएनयू grep के समतुल्य होने का सबसे आसान तरीका क्या है?

(मुझे लगता है कि मैं पर्ल में अपना खुद का मिनी-जीआरपी लिख सकता हूं, लेकिन ऐसा लगता है कि यह आवश्यक नहीं होना चाहिए। पर्ल कुकबुक की मेरी प्रति में टीसीजीआरपी के लिए स्रोत शामिल है; क्या मुझे इसका उपयोग करना चाहिए? , नवीनतम संस्करण कहां है? मुझे मत बताओ मुझे इस पूरे कार्यक्रम को टाइप करना होगा!)

उत्तर

23

ack का उपयोग करें! एर्क पर्ल में लिखा गया है, इसलिए यह पर्ल के रेगेक्स इंजन (डिफ़ॉल्ट रूप से) का उपयोग करता है।

नकारात्मक लुक-पीछे है ack "(?<!bad)boy"

+1

मैंने सोचा कि कोई इसका सुझाव दे सकता है, लेकिन मुझे नहीं लगता कि एएके नकारात्मक दिखने का उपयोग करता है। उदाहरण के लिए, मैंने एक temp निर्देशिका में एक temp फ़ाइल बनाई है जिसमें दो पंक्तियां हैं: "goodboy" और "badboy" और फिर संक्षेप में पर्ल से नमूना का उपयोग किया: 'ack "(?

+4

ऋणात्मक लुक-बैक ack "(? है, = willert

+0

अजीब से दूर हो जाएं। मैंने अपनी त्रुटि को सुधारने के लिए कलम में अपनी पुस्तक पर लिखा है! –

3

अन्य question से एक टिप्पणी के लिए धन्यवाद (willert की टिप्पणी के अनुसार)। मैंने पाया है कि नकारात्मक दिखने का प्रयोग grep में -P/--perl-regexp विकल्प के साथ प्रयोगात्मक रूप से समर्थित है, इसलिए यदि आप grep का उपयोग करना जारी रखना चाहते हैं तो आपको अभी भी एक अलग टूल का उपयोग करने की आवश्यकता नहीं है।

वैसे, grep पर मेरा पसंदीदा विकल्प grin (जो पायथन में लिखा गया है) है।

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