लिनक्स/यूनिक्स में, लॉग फ़ाइल में टेक्स्ट (स्ट्रिंग) या त्रुटियों को खोजने के लिए grep कमांड का उपयोग किया जाता है। Grep आपको किसी अन्य कमांड के आउटपुट में किसी भी डेटा को खोजने/चुनने की अनुमति देता है:
command | grep search
पावरशेल में, आप फ़ाइल में टेक्स्ट स्ट्रिंग खोजने के लिए Select-String cmdlet का उपयोग कर सकते हैं।
उदाहरण के लिए, निम्न कमांड टेक्स्ट फ़ाइल या stdout में ERROR वाली सभी पंक्तियों को प्रदर्शित करता है:
Select-String -Path c:\tmp\makeapp_sxtracesxs.txt -Pattern "ERROR"
कमांड ने उन पंक्तियों की संख्या दिखाई है जिनमें आपके द्वारा खोजा जा रहा टेक्स्ट है और उनके मान।
यदि आप किसी विशिष्ट निर्देशिका में सभी TXT फ़ाइलों में स्ट्रिंग खोजना चाहते हैं, तो नीचे दी गई कमांड चलाएं:
Select-String -Path c:\tmp\*.txt -Pattern "ERROR"
आप इस कमांड का उपयोग कर सकते हैं यदि आप किसी फ़ोल्डर में सभी फ़ाइलों में खोजना चाहते हैं। उदाहरण के लिए, यह कमांड एक्सचेंज सर्वर पर ट्रांसपोर्ट (SMTP) और मैसेज ट्रैकिंग लॉग्स खोजने के लिए उपयोगी हो सकती है।
Exclude और Include विकल्पों का उपयोग करके, आप खोज के लिए कुछ फ़ाइलों को शामिल या बाहर कर सकते हैं। निम्न कमांड उन सभी TXT और LOG फ़ाइलों में खोजेगी जिनके नाम में copy नहीं है:
$path = "c:\tmp\*"
Select-String -Path $path -Pattern "ERROR" -Include "*.txt","*.log" -Exclude "*copy*"
पिछला उदाहरण केवल निर्दिष्ट निर्देशिका में टेक्स्ट खोजता है। नेस्टेड निर्देशिकाओं में फ़ाइलों को रिकर्सिवली खोजने के लिए, Get-ChildItem cmdlet का उपयोग करें:
Get-ChildItem -Path 'c:\tmp\' -Recurse -include "*.mp3","*.avi" -ErrorAction SilentlyContinue | Select-String -SimpleMatch "ERROR","WARNING"