উত্তর:
-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
পাওয়ারশেলের স্থানীয় নয়, কমান্ড প্রম্পট।
আমি গ্রেপের সাথে পরিচিত নই তবে সিলেক্ট-স্ট্রিংয়ের সাথে আপনি করতে পারেন:
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$"
এটি একটি ডিরেক্টরি ফাইল অনুসন্ধান দেয় (* বা আপনি কেবল একটি ফাইল নির্দিষ্ট করতে পারেন) এবং একটি ফাইল-বিষয়বস্তু অনুসন্ধান সমস্ত গ্রা্যাপের মতো পাওয়ারশেলের এক লাইনেই অনুসন্ধান করুন। আউটপুট অনুরূপ হবে:
doc.txt:31: Enter REGEX Here
HelloWorld.txt:13: Enter REGEX Here
এই প্রশ্নের ইতিমধ্যে একটি উত্তর রয়েছে, তবে আমি কেবল যুক্ত করতে চাই যে উইন্ডোজটিতে লিনাক্স ডাব্লুএসএল এর জন্য উইন্ডোজ সাবসিস্টেম রয়েছে ।
সুতরাং উদাহরণস্বরূপ, যদি আপনি যাচাই করতে চান যে আপনার কাছে ইলাসিসার্ক নামের একটি পরিষেবা রয়েছে যা স্থিতি চলমান আছে আপনি পাওয়ারশেলে নীচে স্নিপেটের মতো কিছু করতে পারেন
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"
তবে নির্বাচন-স্ট্রিংয়ের কাছে এই বিকল্পটি মনে হয় না।
সঠিক। পাওয়ারশেল * নিক্স শেলসের টুলসেটের ক্লোন নয় ।
তবে এটির মতো নিজের মতো করে তৈরি করা শক্ত নয়:
$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
অনেক ক্লিনার