printing - Grep का उपयोग करते समय लाइन नंबर प्राप्त करें




line (4)

मैं एक स्ट्रिंग के लिए फ़ाइलों को खोजने के लिए grep रिकर्सिव का उपयोग कर रहा हूं, और सभी मिलान की गई फ़ाइलें और उस स्ट्रिंग वाली रेखाएं टर्मिनल पर प्रिंट होती हैं। लेकिन क्या उन लाइनों की रेखा संख्या भी प्राप्त करना संभव है ??

उदा: वर्तमान में मुझे जो मिलता है वह है /var/www/file.php: $options = "this.target" , लेकिन जो मैं प्राप्त करने की कोशिश कर रहा हूं वह है /var/www/file.php: 1142 $options = "this.target"; , अच्छी तरह से 1142 उस स्ट्रिंग युक्त रेखा संख्या होगी।

सिंटेक्स मैं grep recursively के लिए उपयोग कर रहा हूँ sudo grep -r 'pattern' '/var/www/file.php'

एक और सवाल यह है कि, हम पैटर्न के बराबर न होने के परिणाम कैसे प्राप्त करते हैं। सभी फाइलों की तरह, लेकिन एक निश्चित स्ट्रिंग वाले नहीं?


यदि आप केवल लाइन नंबर चाहते हैं तो यह करें:

grep -nr Pattern file.ext | gawk '{print $1}' FS=":"

उदाहरण:

$ grep -nr 9780545460262 EXT20130410.txt | gawk '{print $1}' FS=":" 
48793
52285
54023

लाइन नंबर grep -n साथ मुद्रित हैं:

grep -n pattern file.txt

केवल लाइन नंबर (मिलान लाइन के बिना) प्राप्त करने के लिए, कोई cut उपयोग कर सकता है:

grep -n pattern file.txt | cut -d : -f 1

जिन रेखाओं में पैटर्न नहीं है, वे grep -v साथ मुद्रित हैं:

grep -v pattern file.txt

grep -A20 -B20 pattern file.txt

पैटर्न खोजें और पैटर्न के बाद और पहले 20 लाइनें दिखाएं


grep -nr SEARCHTERM file1 file2 ...