2012-04-05 15 views
7

युक्त लाइनों को फ़िल्टर करने के लिए लिनक्स बैश grep कमांड के लिए RegExp मदद की आवश्यकता है, उदाहरण के लिए, मुझे केवल 'एबीसी' वाली रेखा को फ़िल्टर करने की आवश्यकता है, जबकि 'एबीसी' से मेल खाने वाली रेखाओं को छोड़कर स्क्वायर ब्रैकेट्स:स्क्वायर ब्रैकेट

 
2012-04-04 04:13:48,760~sample1~ABC[TLE 5332.233 2/13/2032 3320392]:CAST 
2012-04-04 04:13:48,761~sample2~ABC 
2012-04-04 04:13:48,761~sample3~XYZ[BAC.CAD.ABC.CLONE 232511]:TEST 

यहाँ मैं क्या किया है, लेकिन अब तक मैं सफलतापूर्वक वर्ग कोष्ठक के साथ लाइनों को फिल्टर करने में असमर्थ हूं:

bash-3.00$ cat Metrics.log | grep -e '[^\[\]]' | grep -i 'ABC'

कृपया मदद?

+0

+1 नमूना इनपुट के लिए, वांछित उत्पादन का स्पष्ट विवरण और कुछ नमूना कोड! सौभाग्य। – shellter

उत्तर

3

संपादित टिप्पणी के आधार पर:

प्रयास करें grep -i 'ABC' Metrics.log | grep -v "[[]" | grep -v "ABC\w"

इनपुट:

2012-04-04 04:13:48,760~sample1~ABC[TLE 5332.233 2/13/2032 3320392]:CAST 
2012-04-04 04:13:48,761~sample2~ABC 
2012-04-04 04:13:48,761~sample3~XYZ[BAC.CAD.ABC.CLONE 232511]:TEST 
2012-04-04 04:13:48,761~sample4~XYZ 
2012-04-04 04:13:48,761~sample5~ABCD 
2012-04-04 04:13:48,761~sample6~ABC:TEST 

आउटपुट:

2012-04-04 04:13:48,761~sample2~ABC 
2012-04-04 04:13:48,761~sample6~ABC:TEST 
+1

यदि यह आपके लिए काम करता है, तो क्या आप उत्तर को सही के रूप में चिह्नित करना चाहते हैं? धन्यवाद! – GetSet

+0

नोट, बिल्ली Metrics.log की कोई ज़रूरत नहीं है, बस इसे पहले 'grep के इनपुट के रूप में आपूर्ति करें। grep -i 'एबीसी' मेट्रिक्स.लॉग | grep -v "[[]" ' – matchew

+0

धन्यवाद। उत्तर के रूप में चिह्नित। बिल्ली के बारे में नोट किया। एक और मामला: एबीसीडी जैसे झूठे मैचों को छोड़ने की जरूरत है, लेकिन एबीसी नहीं: टेस्ट। –

1
$cat log | grep -v '\[.*\]' | grep ABC 
+0

यह भी काम करता है। धन्यवाद –

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