लिनक्स आउटपुट लाइन नंबर जहां स्ट्रिंग मैच दिखाई देता है


0

मैं ऐसा करने के लिए देख रहा हूँ कमांड को बढ़ाने के लिए मुझे पहले से ही लाइन नंबर वापस करना होगा जहाँ निर्दिष्ट स्ट्रिंग दिखाई देती है:

grep -r -l -n -w "ePKI" /home/websites/www/* > /home/keywords.txt

इसके बाद के संस्करण की तरह रिटर्न फाइलनाम

filename_where_keyword_appears_01.txt
filename_where_keyword_appears_02.txt
etc

और मैं यह करना चाहूंगा कि जहां फ़ाइल में स्ट्रिंग दिखाई देती है, वहां की पंक्ति संख्या लौटाएं, जैसे:

filename_where_keyword_appears_01.txt 12 45 67 89

किसी को भी इस तरह से कुछ करने के लिए अपने आदेश में सुधार करने पर संभवतः मुझे सलाह दे सकता है?

जवाबों:


1

आप इस तरह के परिणाम प्राप्त कर सकते हैं जो आप छोड़ कर चाहते हैं -L और कट का उपयोग करके निम्नानुसार है:

grep -r -n -w "ePKI" /home/websites/www/*|cut -d':' -f 1,2 > /home/keywords.txt

यदि आपको आउटपुट की आवश्यकता है जैसा आपने वर्णित किया है, तो आप awk के साथ प्रयास कर सकते हैं:

awk -F, 'FNR==1 {printf "\n%s",FILENAME};/ePKI/ {printf " %d ",NR} END {printf "\n"}' /home/websites/www/*

इसे पुनरावृत्ति के लिए खोज के साथ मिलाएं:

find /home/websites/www/* -type f -print0 | xargs -0 awk -F, 'FNR==1 {printf "\n%s",FILENAME};/ePKI/ {printf " %d ",NR} END {printf "\n"}'

0

विकल्प -l सामान्य आउटपुट को दबाता है और केवल फ़ाइल नाम को प्रिंट करता है। ऑमिट विकल्प -l और विकल्प रखें -n फ़ाइल का नाम देखने के लिए तथा लाइन नंबर। इसके अतिरिक्त आप विकल्प निर्दिष्ट करते समय मिलान रेखा या केवल मिलान भाग देखेंगे -o

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