Riddle me this:
I have a text file of data. I want to read it in, and only output lines that contain any string that is found in an array of search terms.
If I were looking for just one string, I would do something like this:
get-content afile | where { $_.Contains("TextI'mLookingFor") } | out-file FilteredContent.txt
Now, I just need for "TextI'mLookingFor" to be an array of strings, where if $_ contains any string in the array, it is passed down the pipe to out-file.
How would I do that (and BTW, I'm a c# programmer hacking this powershell script, so if there is a better way to do my match above than using .Contains(), clue me in!)
without regex and with spaces possible:
Any help?
Try
Select-String
. It allows an array of patterns. Ex:Notice that I use
-SimpleMatch
so thatSelect-String
ignores special regex-characters. If you want regex in your patterns, just remove that.For a single pattern I would probably use this, but you have to escape regex characters in the pattern:
Select-String
is a great cmdlet for single patterns too, it's just a few characters longer to write ^^