Grep से लाइन नंबर कैसे प्राप्त करें?


19

निम्नलिखित grep

grep -r -e -n coll *

प्रदर्शित करेगा

fullpath/filename:  <tag-name>coll</tag-name>

मैं जानना चाहूंगा कि निम्नलिखित पाठ में कौन सी पंक्ति है, मैंने जोड़ने की कोशिश की -n, लेकिन यह काम नहीं किया। मैंने जोड़ने की कोशिश की | grep -n *, लेकिन यह कुछ अजीब था।

मैं क्या देखना चाहूंगा (मुझे प्रारूप की परवाह नहीं है)

fullpath/filename:10:  <tag-name>coll</tag-name>

1
मैं -nविकल्प का उपयोग करते समय लाइन नंबर देखता हूं । क्या आप जो प्राप्त करते हैं उसका आउटपुट पोस्ट कर सकते हैं?
क्रि हार्पर

जवाबों:


18

आपको -eविकल्प सूची के अंत में रखा जाना चाहिए :grep -rne coll *


16

-r और -e के लिए कोई ज़रूरत नहीं है!

एक पैटर्न की लाइन नंबर प्राप्त करें!

grep -n "pattern" file.txt

अगर आप आउटपुट के रूप में केवल लाइन नंबर प्राप्त करना चाहते हैं, तो उसमें एक और grep कमांड जोड़ें!

grep -n "pattern" file.txt | grep -Eo '^[^:]+'

1
बस लाइन नंबर प्राप्त करने के लिए, इसका उपयोग करना आसान है cut, जैसेcut -f1 -d:
wjandrea

1

एक विशिष्ट फ़ाइल में एक पैटर्न grep करने के लिए, और मिलान रेखाएँ प्राप्त करें:

grep -n <Pattern> <File> | awk -F: '{ print $1 }' | sort -u

या cut@wandrearea द्वारा सुझाए गए अनुसार:

grep -n <Pattern> <File> | cut -f1 -d: | sort -u

कहाँ पे

  • <Pattern>एक उद्धृत ग्लोब पैटर्न ( -Eregexp के लिए उपयोग विकल्प );
  • <File> वह फ़ाइल है जिसमें आप रुचि रखते हैं;
  • पहला पाइप awk ...grep के आउटपुट में लाइन संख्या को फ़िल्टर करता है ( :प्रत्येक पंक्ति से पहले );
  • दूसरा पाइप यह सुनिश्चित करता है कि लाइन नंबर केवल एक बार दिखाई दे।

बस लाइन नंबर प्राप्त करने के लिए, cutAwk की तुलना में उपयोग करना आसान है , जैसेcut -f1 -d:
wjandrea

@wjandrea किस तरीके से आसान है?
शेजोहोन

मेरा मतलब है कि वाक्य रचना सरल है
wjandrea

@wjandrea यह बहुत उद्देश्य लगता है।
शेलजोन

@wjandrea व्यंग्य के लिए क्षमा करें, मैंने आपके सुझाव को शामिल करने के लिए संपादन किया :)
शेलजॉन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.