使用powershell在文本文件中查找多行字符串
我正在尝试使用下面的脚本在文本文件中查找多行字符串,但它没有按预期工作使用powershell在文本文件中查找多行字符串,powershell,Powershell,我正在尝试使用下面的脚本在文本文件中查找多行字符串,但它没有按预期工作 $tns= "MYSID= (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = mydnshostname)(PORT = 1111)) ) (CONNECT_DATA = (SERVICE_NAME = MYSID) ) )" $SEL = Select-St
$tns= "MYSID=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = mydnshostname)(PORT = 1111))
)
(CONNECT_DATA =
(SERVICE_NAME = MYSID)
)
)"
$SEL = Select-String -Path T:\Test\search.txt -Pattern $tns
if ($SEL -ne $null)
{
Write-Host "Contains String"
}
else
{
Write-Host "Not Contains String"
}
这取决于文件的行尾。在windows中,以
\r\n
结尾的行,一种方法是这样。如果匹配,它将返回整个文件
echo one '(two)' three four five | set-content file.txt
get-content -raw file.txt | select-string '\(two\)\r\nthree\r\nfour'
one
(two)
three
four
five
或者使用正则表达式单行模式(?s)
,其中
可以匹配行尾。如果没有管道,选择字符串似乎无法匹配多行(-path
参数)
这取决于文件的行尾。在windows中,以
\r\n
结尾的行,一种方法是这样。如果匹配,它将返回整个文件
echo one '(two)' three four five | set-content file.txt
get-content -raw file.txt | select-string '\(two\)\r\nthree\r\nfour'
one
(two)
three
four
five
或者使用正则表达式单行模式(?s)
,其中
可以匹配行尾。如果没有管道,选择字符串似乎无法匹配多行(-path
参数)
代码不起作用*当您使用
选择字符串
时,-模式
是正则表达式模式。您的模式包含多个特殊的正则表达式字符[()
]。尝试使用-SimpleMatch
获取非正则模式匹配。或执行选择字符串-模式$([regex]::Escape($tns))
请发布您正在使用的输入文件的真实示例,以及您希望从中获得的确切信息。我怀疑你真的想要整个多行字符串。我怀疑您可以使用更简单的模式来获取所需的实际信息。代码不起作用*当您使用选择字符串时,-pattern
是正则表达式模式。您的模式包含多个特殊的正则表达式字符[()
]。尝试使用-SimpleMatch
获取非正则模式匹配。或执行选择字符串-模式$([regex]::Escape($tns))
请发布您正在使用的输入文件的真实示例,以及您希望从中获得的确切信息。我怀疑你真的想要整个多行字符串。我想你可以用一个更简单的模式来获得你想要的实际信息。