Powershell 在文件内部检查变量中的文本但忽略空格
Powershell checking inside a file for text in a variable but ignoring whitespace
我使用 PowerShell 尝试做的是在配置文件中搜索具有随机数量的空格或制表符的文本字符串
使用
$mytext = '<add name="MyName"
dllPath="My.dll"
className="MyClass" />'
Select-String -Path $myfile -Pattern $mytext
我认为 .replace(' ' , '')
可能有助于解决只删除空格的问题。然后我想,这里有很多比我聪明的人!
提前致谢
纳蒂
如果你的空格可以包含换行符,就像它看起来的那样,那么我认为你不能用 Select-String
做到这一点。它似乎是逐行检查您的模式,如果您的模式需要跨行,这将不起作用。在这种情况下,您可以使用 Get-Content
将整个文件作为单个字符串读取,并使用 -match
运算符,例如:
Get-Content .\file.txt -Raw | Where {$_ -match '(?s)(name.*?dllPath)'} |
Foreach {$matches[1]}
请注意,正则表达式模式使用 singleline
或点通过此指令匹配任何模式 (?s)
。
感谢各位指点。
根据你们提供的信息,我现在正在将 xml 加载到一个变量中并对其进行解析。
[xml]$myfile = Get-Content "c:\myfile.config"
然后您可以使用它来检查它
IF ($myfile.name -match $matchnametothis) {Write-Host "do something exciting here"}
再次感谢,希望这对其他人有帮助。
纳蒂
我使用 PowerShell 尝试做的是在配置文件中搜索具有随机数量的空格或制表符的文本字符串
使用
$mytext = '<add name="MyName"
dllPath="My.dll"
className="MyClass" />'
Select-String -Path $myfile -Pattern $mytext
我认为 .replace(' ' , '')
可能有助于解决只删除空格的问题。然后我想,这里有很多比我聪明的人!
提前致谢
纳蒂
如果你的空格可以包含换行符,就像它看起来的那样,那么我认为你不能用 Select-String
做到这一点。它似乎是逐行检查您的模式,如果您的模式需要跨行,这将不起作用。在这种情况下,您可以使用 Get-Content
将整个文件作为单个字符串读取,并使用 -match
运算符,例如:
Get-Content .\file.txt -Raw | Where {$_ -match '(?s)(name.*?dllPath)'} |
Foreach {$matches[1]}
请注意,正则表达式模式使用 singleline
或点通过此指令匹配任何模式 (?s)
。
感谢各位指点。
根据你们提供的信息,我现在正在将 xml 加载到一个变量中并对其进行解析。
[xml]$myfile = Get-Content "c:\myfile.config"
然后您可以使用它来检查它
IF ($myfile.name -match $matchnametothis) {Write-Host "do something exciting here"}
再次感谢,希望这对其他人有帮助。
纳蒂