2012-05-14 17 views
29

के साथ एक विशिष्ट शब्द दिखाई देता है grep निर्दिष्ट शब्द दिखाई देने वाली रेखा संख्या प्रदान करने में सक्षम है?लाइन नंबर खोजें जहां "grep"

साथ ही, कुछ निश्चित रेखा से शुरू होने वाले शब्द की खोज के लिए grep का उपयोग करना संभव है?

+1

मेरा मानना ​​है कि यह [सुपरयूसर] (http://superuser.com/) के लिए बेहतर होगा। –

+4

@ डंसमोरब मैं असहमत हूं। 'grep' एक पावर उपयोगकर्ता उपकरण के रूप में प्रोग्रामर का टूल जितना अधिक है। –

+0

मैं हर समय 'grep' का उपयोग करता हूं। लेकिन यह वास्तव में एक प्रोग्रामिंग से संबंधित सवाल नहीं है। –

उत्तर

44

मिलान की लाइन संख्या प्राप्त करने के लिए grep -n का उपयोग करें।

मुझे नहीं लगता कि grep को एक निश्चित लाइन नंबर पर शुरू करने का कोई तरीका है। इसके लिए, sed का उपयोग करें। उदाहरण के लिए, लाइन 10 पर शुरू और मिलान लाइनों के लिए लाइन नंबर और लाइन मुद्रित करने के लिए उपयोग करें:

sed -n '10,$ { /regex/ { =; p; } }' file 

केवल लाइन नंबर पाने के लिए आपको

grep -n 'regex' | sed 's/^\([0-9]\+\):.*$/\1/' 

या आप इस्तेमाल कर सकते हैं बस एसईडी इस्तेमाल कर सकते हैं:

sed -n '/regex/=' file 

दो एसईडी आदेशों के संयोजन, आपको मिलता है:

sed -n '10,$ { /regex/= }' file 
+0

ठीक है, तो grep -n उस पंक्ति को वापस कर देगा जिसमें शब्द और रेखा संख्या शामिल है। क्या लाइन लाइन पाने के लिए वैसे भी है? –

+0

@OneTwoThree मेरे संपादन देखें। –

+0

@OneTwoThree क्या यह आपके लिए काम करता है? –

3

आप tail +[line number] [file] और grep -n को यह पाइप लाइन जो संख्या से पता चलता कॉल कर सकते हैं:

tail +[line number] [file] | grep -n /regex/ 

इस विधि के साथ समस्या सिर्फ grep -n द्वारा रिपोर्ट लाइन नंबर है वास्तविक लाइन नंबर से [line number] - 1 कम होगा [file] में।

1

या आप

grep -n . file1 |tail -LineNumberToStartWith|grep regEx 

इस का उपयोग

grep -n . file1 

फ़ाइल की पंक्तियों को नंबर की देखभाल कर सकते हैं यह

tail -LineNumberToStartWith 

अंतिम LineNumberToStartWith प्रिंट होगा और अंत में यह आपकी वांछित लाइनों को grep करेगा (जिसमें लाइन संख्या को orignal फ़ाइल में शामिल किया जाएगा)

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