grep

2013-05-08 8 views
6

में प्रत्येक मिलान रेखा के भीतर कॉलम ऑफ़सेट प्रिंट करने के लिए कैसे करें grep को -o -n पास करके मैं एक फ़ाइल के भीतर एक पैटर्न के सभी मिलान भागों को आउटपुट कर सकता हूं, और लाइन नंबर जिस पर प्रत्येक मैच मिला था।grep

मैं उस पंक्ति के भीतर कॉलम ऑफसेट को भी प्रिंट कैसे कर सकता हूं जिस पर पैटर्न पाया गया था?

+1

केवल स्पष्टता के लिए, कॉलम ऑफसेट द्वारा आप का मतलब रेखा/स्ट्रिंग में चरित्र ऑफसेट है, है ना? – themanatuf

+0

हां यह सही है, चरित्र रेखा में ऑफसेट है। –

+0

विम 'सेट grepprg' :-) –

उत्तर

5

मुझे लगता है कि मैं वही काम कर रहा हूं जो आप अजीब के साथ कर रहे हैं। संदर्भित AWK मैनुअल:

http://www.staff.science.uu.nl/~oostr102/docs/nawk/nawk_92.html

यहाँ मेरी फाइल की तरह दिखता है:

this,is,a,test,line 
this, ,a,test,line,with,the,second,field,blank 
this, is,another,test,line,with,a,blank,in,the,second,field,but,the,field,isnt,blank 
this, ,is,another,line,with,a,blank,second,field 

और यहाँ के आदेश मैं भाग गया:

awk '{regex = "test"; where = match($0, regex); print "REGEX: ",where," on line ",NR}' test 

और उत्पादन:

REGEX: 11 on line 1 
REGEX: 10 on line 2 
REGEX: 18 on line 3 
REGEX: 0 on line 4 

मैंने यह त्वरित और गंदा किया, लेकिन मुझे उम्मीद है कि यह आपको प्राप्त करने के लिए पर्याप्त मदद करता है जहां आपको होना चाहिए।

+3

आपको थोड़ी देर की आवश्यकता हो सकती है? अन्यथा आप केवल प्रति पंक्ति पहला मैच पाते हैं। – Kent