2012-05-28 14 views
5

मैं वर्तमान में 10 लाइनों से पहले एक फ़ाइल से "अपवाद", और आउटपुट के लिए मिलान कर रहा हूँ और उपयोग करने के बाद:ग्रेप अपवाद लेकिन बाहर निकालने के विशिष्ट अपवाद

ग्रेप -सी 10 "। [* अपवाद"

लेकिन अब मैं कुछ विशिष्ट अपवाद बाहर रखना चाहते हैं, कहते हैं कि AAAException और BBBException, मैं इसे कैसे कर सकता है? यह

grep -v "AAAException" के माध्यम से किया जा सकता है। ग्रेप -सी 10 "[। * अपवाद"

लेकिन अगर फ़ाइल के भीतर, मैं AAAException है कुछ अन्य अपवाद से लाइनों 10 के भीतर, कि लाइन, उत्पादन में शामिल नहीं किया जाएगा जो नहीं है मैं क्या चाहता हूँ। मैं AAAException के लिए कैसे मेल नहीं कर सकता, लेकिन अगर यह किसी अन्य अपवाद से 10 लाइनों के भीतर हुआ, तो इसे अभी भी आउटपुट में शामिल किया जाएगा?

उत्तर

5

आप grep -P है तो आप उसे नकारात्मक lookbehind अभिकथन निर्दिष्ट कर सकते हैं।

grep -C 10 -P '\[.*(?<!AAA|BBB)Exception' 
+0

पूरी तरह से काम करता है! धन्यवाद। – Kathie

+0

मैं सोच रहा था कि कैसे करता है? Kathie

+0

इसका मूल रूप से अर्थ है "यहां से पहले पाठ नहीं हो सकता"। – tripleee

0

यदि आपका सकारात्मक मिलान पैटर्न अपवाद एक शब्द है जिसे मैंने पहले वर्णित नहीं किया है/उसके बाद अन्य वर्णमाला के बाद आप शब्द-सीमा का उपयोग कर सकते हैं।

$ grep -C 10 '\<NullPointerException\>\|\<SessionTimeoutException\>' 
+0

यह अपवाद के किसी भी प्रकार हो सकता है, NullPointerException या SessionTimeoutException – Kathie

+0

कहते हैं कि तुम सूची है की + ve * अपवाद, आप कर सकते हैं ** या साथ | ** – tuxuday

+0

मैं तुम क्या मतलब नहीं मिलता "या के साथ करते हैं | "हालांकि, वर्तमान चरण में, मेरे पास – Kathie

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