2010-10-19 15 views
269

मैं एक फ़ाइल में स्ट्रिंग मिलान करने के लिए grep का उपयोग कर रहा हूँ।लाइन के अंत में लाइन नंबर दिखाने के लिए और हिट गिनती को दिखाने के लिए मैं अपने जीआरपी आउटपुट को कैसे प्रारूपित कर सकता हूं?

example one, 
example two null, 
example three, 
example four null, 

grep -i null myfile.txt रिटर्न

example two null, 
example four null, 

कैसे मैं इस तरह एक साथ मिलान किया लाइनों लौट सकते हैं उनके लाइन नंबर के साथ:

example two null, - Line number : 2 
    example four null, - Line number : 4 
    Total null count : 2 

मैं -c रिटर्न पता मिलान किया कुल यहाँ एक उदाहरण फ़ाइल है रेखाएं, लेकिन मैं आगे total null count जोड़ने के लिए इसे ठीक से प्रारूपित करने का तरीका नहीं हूं, और मुझे नहीं पता कि लाइन नंबर कैसे जोड़ना है।

मैं क्या कर सकता है?

उत्तर

434

-n रिटर्न लाइन नंबर।

-i अनदेखा-मामले के लिए है। सिर्फ अगर मामला मिलान आवश्यक नहीं है इस्तेमाल किया जा

$ grep -in null myfile.txt 

2:example two null, 
4:example four null, 

awk के साथ जोड़े मैच के बाद लाइन नंबर प्रिंट:

$ grep -in null myfile.txt | awk -F: '{print $2" - Line number : "$1}' 

example two null, - Line number : 2 
example four null, - Line number : 4 

उपयोग आदेश प्रतिस्थापन बाहर कुल अशक्त गिनती मुद्रित करने के लिए:

$ echo "Total null count :" $(grep -ic null myfile.txt) 

Total null count : 2 
+0

क्या मैं इसे पहले के बजाय लाइन नंबर जोड़कर प्रारूपित कर सकता हूं:? – London

+1

निश्चित रूप से, मैंने अपना जवाब अपडेट कर दिया है। – dogbane

+0

अपने समाधान ठीक लगता है, लेकिन awk95 एक त्रुटि 'मिलती है: संदर्भ है स्रोत लाइन में सिंटेक्स त्रुटि >>> '<<< लापता} awk95: स्रोत लाइन पर प्रति सहिष्णु 1' – London

38

-n या --line-number का उपयोग करें।

बहुत अधिक विकल्पों के लिए man grep देखें।

+2

नया लिनक्स उपयोगकर्ता मैन पेज पढ़ने का आलसी है। लेकिन अगर वे पर्याप्त लिनक्स का उपयोग करते हैं, तो इसका उपयोग किया जाएगा :) यह बहुत उपयोगी है :) – nXqd

+11

हमेशा आलसी नहीं है, (लेकिन कभी-कभी), अक्सर यह है कि एक नए लिनक्स उपयोगकर्ता को मैन पेज को समझने में परेशानी होती है। (वे _seem_ क्रिप्टिक कर सकते हैं) – TecBrat

5

प्रत्येक मैच के सामने लाइन नंबर आउटपुट करने के लिए grep -n -i null myfile.txt का उपयोग करें।

मुझे लगता है कि ग्रेप एक स्विच की कुल लाइनों का मिलान नहीं हुआ की गिनती मुद्रित करने के लिए है नहीं है, लेकिन तुम सिर्फ WC में पाइप ग्रेप का उत्पादन है कि पूरा करने के लिए कर सकते हैं:

grep -n -i null myfile.txt | wc -l 
+2

-c – dpatchery

+0

से मेल खाने वाली कुल लाइनों को प्रिंट करेगा आप सही हैं। दुर्भाग्य से यह सामान्य आउटपुट को भी दबा देता है। – WakiMiko

3

grep लाइनों और उत्पादन लाइन नंबर मिल जाए, लेकिन आपको अन्य चीजों को "प्रोग्राम" नहीं करने देता है। आप मनमाने ढंग से पाठ शामिल करना चाहते हैं और अन्य "प्रोग्रामिंग" करते हैं, तो आप awk उपयोग कर सकते हैं,

$ awk '/null/{c++;print $0," - Line number: "NR}END{print "Total null count: "c}' file 
example two null, - Line number: 2 
example four null, - Line number: 4 
Total null count: 2 

या केवल खोल का उपयोग कर (बैश/ksh)

c=0 
while read -r line 
do 
    case "$line" in 
    *null*) (
    ((c++)) 
    echo "$line - Line number $c" 
    ;; 
    esac 
done < "file" 
echo "total count: $c" 
6

या बजाय awk का उपयोग करें:

awk '/null/ { counter++; printf("%s%s%i\n",$0, " - Line number: ", NR)} END {print "Total null count: " counter}' file 
2

या perl में (पूर्णता के लिए ...):

perl -npe 'chomp; /null/ and print "$_ - Line number : $.\n" and $i++;$_="";END{print "Total null count : $i\n"}' 
1

अपने टर्मिनल या cmd में कोड और फ़ाइल उपयोग इस आदेश की लाइन लाइन प्रदर्शित करने के लिए linux आदेश linux http://linuxcommand.org/man_pages/grep1.html

के लिए इस लिंक का संदर्भ लें नहीं,, GitBash (टर्मिनल द्वारा संचालित)

grep -irn "YourStringToBeSearch" 
संबंधित मुद्दे

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