जवाबों:
-Pattern
में पैरामीटर Select-String
का समर्थन करता है पैटर्न की एक सरणी। तो आप जिसे खोज रहे हैं वह है:
Get-Content .\doc.txt | Select-String -Pattern (Get-Content .\regex.txt)
यह doc.txt
प्रत्येक रेगीक्स (प्रति पंक्ति) का उपयोग करके टेक्स्टफाइल के माध्यम से खोज करता हैregex.txt
PS) new-alias grep findstr
PS) C:\WINDOWS> ls | grep -I -N exe
105:-a--- 2006-11-02 13:34 49680 twunk_16.exe
106:-a--- 2006-11-02 13:34 31232 twunk_32.exe
109:-a--- 2006-09-18 23:43 256192 winhelp.exe
110:-a--- 2006-11-02 10:45 9216 winhlp32.exe
PS) grep /?
findstr
सबसे अधिक काम grep
करता है। Select-String
वस्तुओं के साथ काम करने के लिए महान है, लेकिन कभी-कभी आप केवल तारों पर मेल खाना चाहते हैं।
findstr
PowerShell के मूल निवासी नहीं हैं, लेकिन कमांड प्रॉम्प्ट।
मैं grep से परिचित नहीं हूँ लेकिन Select-String के साथ आप कर सकते हैं:
Get-ChildItem filename.txt | Select-String -Pattern <regexPattern>
आप गेट-कंटेंट के साथ भी ऐसा कर सकते हैं:
(Get-Content filename.txt) -match 'pattern'
dir *.cs -Recurse | sls "TODO" | select -Unique "Path"
। उत्कृष्ट सूचक के लिए Thx।
इसलिए मुझे इस लिंक पर एक बहुत अच्छा जवाब मिला: https://www.thomasmaurer.ch/2011/03/powershell-search-for-string-or-grep-for-powershell/
लेकिन अनिवार्य रूप से यह है:
Select-String -Path "C:\file\Path\*.txt" -Pattern "^Enter REGEX Here$"
यह एक निर्देशिका फ़ाइल खोज देता है (* या आप बस एक फ़ाइल निर्दिष्ट कर सकते हैं) और एक फ़ाइल-सामग्री खोज PowerShell की एक पंक्ति में, बहुत कुछ grep के समान है। आउटपुट के समान होगा:
doc.txt:31: Enter REGEX Here
HelloWorld.txt:13: Enter REGEX Here
इस सवाल का पहले से ही एक उत्तर है, लेकिन मैं बस यह जोड़ना चाहता हूं कि विंडोज में लिनक्स डब्ल्यूएसएल के लिए विंडोज सबसिस्टम है ।
इसलिए उदाहरण के लिए यदि आप जाँचना चाहते हैं कि क्या आपके पास Elasicsearch नाम की सेवा है जो स्थिति में चल रही है तो आप कुछ ऐसा कर सकते हैं जैसे कि पॉवरशिप में नीचे स्निपेट है।
net start | grep Elasticsearch
मेरे पास एक ही मुद्दा था कि पावरशेल के साथ फाइल में टेक्स्ट खोजने की कोशिश करें। मैंने निम्न का उपयोग किया - जितना संभव हो लिनक्स वातावरण के करीब रहने के लिए।
उम्मीद है कि यह किसी की मदद करता है:
शक्ति कोशिका:
PS) new-alias grep findstr
PS) ls -r *.txt | cat | grep "some random string"
स्पष्टीकरण:
ls - lists all files
-r - recursively (in all files and folders and subfolders)
*.txt - only .txt files
| - pipe the (ls) results to next command (cat)
cat - show contents of files comming from (ls)
| - pipe the (cat) results to next command (grep)
grep - search contents from (cat) for "some random string" (alias to findstr)
हाँ, यह भी काम करता है:
PS) ls -r *.txt | cat | findstr "some random string"
लेकिन चयन-स्ट्रिंग में यह विकल्प नहीं है।
सही बात। PowerShell * निक्स शेल्स टूलसेट का क्लोन नहीं है।
हालाँकि यह कुछ बनाने के लिए कठिन नहीं है जैसे कि यह स्वयं:
$regexes = Get-Content RegexFile.txt |
Foreach-Object { new-object System.Text.RegularExpressions.Regex $_ }
$fileList | Get-Content | Where-Object {
foreach ($r in $regexes) {
if ($r.IsMatch($_)) {
$true
break
}
}
$false
}
Select-String -Pattern somestring
बहुत साफ है