You can check the "Windows PowerShell Cookbook" by Lee Holmes (O'reilly),
recipe #5.7:
"By default, regular expressions do not search across lines, but you can
use the singline (?s)
option to instruct them to do so."
PS > "Hello `n World" -match "Hello.*World"
False
PS > "Hello `n World" -match "(?s)Hello.*World"
True
Hope this helps
-----
Shay Levi
$cript Fanatic
http://scriptolog.blogspot.com
Hebrew weblog:
http://blogs.microsoft.co.il/blogs/scriptfanatic Quote:
> Thank you both for your input.
>
> I find it very confusing that this doesn't work :
>
> PS C:\Users\Xavier\Desktop> $somevar = "power`nshell`nrocks"
> PS C:\Users\Xavier\Desktop> select-string -inputobject $somevar
> -pattern
> "power`nshell" -quiet
> True
> PS C:\Users\Xavier\Desktop> set-content test.txt $somevar
> PS C:\Users\Xavier\Desktop> get-content test.txt
> power
> shell
> rocks
> PS C:\Users\Xavier\Desktop> get-content test.txt | select-string
> "power"
> -quiet
> True
> PS C:\Users\Xavier\Desktop> get-content test.txt | select-string
> "power\nshell" -quiet
> PS C:\Users\Xavier\Desktop> get-content test.txt | select-string
> "power`nshell" -quiet
> PS C:\Users\Xavier\Desktop>
> So the pattern matches the variable content, but not the file content.
> From what I understand, this is because the first variable is a
> string, and
> the second is an array.
> Keith's solution will work in that case :
> PS C:\Users\Xavier\Desktop> $lines = get-content test.txt
> PS C:\Users\Xavier\Desktop> $text = [string]::Join("`n", $lines)
> PS C:\Users\Xavier\Desktop> select-string -inputobject $text -pattern
> "power`nshell" -quiet
> True
> Thanks a lot,
> Xavier
> "Shay Levi" wrote:
> Quote:
>> # create a here-string with line breaks
>> PS:23 >$hs = @"
>> power
>> shell
>> rocks!
>> "@
>> PS:24 >$hs
>> power
>> shell
>> rocks
>> # test for line break , same as $hs -match "`n"
>> PS:25 >$hs -match "\n"
>> True
>> PS:26 >$hs -match "power\n"
>> True
>> # replace
>> PS:27 >$new = $hs -replace "power\n","power"
>> PS:28 >$new
>> powershell
>> rocks!
>> # same applies with `n
>> PS:29 >$new = $hs -replace "power`n","power"
>> PS:30 >$new
>> powershell
>> rocks!
>> # find string with line break
>> PS:39 >Select-String -InputObject $new -Pattern "powershell\n" -Quiet
>> True
>> # same with `n
>> PS:40 >Select-String -InputObject $new -Pattern "powershell`n" -Quiet
>> True
>> -----
>> Shay Levi
>> $cript Fanatic
>> http://scriptolog.blogspot.com
>> Hebrew weblog: http://blogs.microsoft.co.il/blogs/scriptfanatic Quote:
>>> Hello,
>>>
>>> I am trying to search for a string pattern that includes new lines
>>> with the select-string cmdlet. I was looking for something like \n
>>> to match a new line in the regular expression but I can't seem to
>>> find anything.
>>>
>>> Also, what would be the general syntax to include a new line in a
>>> string (not speaking of regular expressions here) ?
>>>
>>> Any help is appreciated.
>>>
>>> Thanks,
>>> Xavier