PS 版本 2 的 powershell Get-Content -raw 替代品
powershell Get-Content -raw alternative for PS Version 2
对于更高的 powershell 版本,我可以毫无问题地使用以下内容:
$contents = Get-Content $path -raw
if ($contents -match $regex) {
$result = $matches[0]
}
但是在powershell version 2中,Get-Content没有-raw开关,但是如果没有-raw开关,正则表达式匹配步骤总是失败; $matches 似乎是 $null。
我不确定这个 "raw" 参数的内部工作原理,因为 Microsoft 在各自的文档页面上提供了相当可悲的描述,所以我不确定如何解决它。
Get-Content -Raw
忽略换行符并将文件内容作为一个字符串读取。
以下是在 PowerShell 2.0 中模拟 PowerShell 3.0+ -Raw
功能的两种方法:
$contents = [System.IO.File]::ReadAllText($path)
if ($contents -match $regex) {
$result = $matches[0]
}
或者:
$contents = Get-Content -Path $path | Out-String
if ($contents -match $regex) {
$result = $matches[0]
}
作为@HAL9256 的替代方案,您可以将字符串连接在一起:
[string]$contents = @(Get-Content -Path $path) -join [Environment]::NewLine
否则 Get-Content
returns 字符串数组。
if ($contents -match $regex)
{
$result = $matches[0]
}
对于更高的 powershell 版本,我可以毫无问题地使用以下内容:
$contents = Get-Content $path -raw
if ($contents -match $regex) {
$result = $matches[0]
}
但是在powershell version 2中,Get-Content没有-raw开关,但是如果没有-raw开关,正则表达式匹配步骤总是失败; $matches 似乎是 $null。
我不确定这个 "raw" 参数的内部工作原理,因为 Microsoft 在各自的文档页面上提供了相当可悲的描述,所以我不确定如何解决它。
Get-Content -Raw
忽略换行符并将文件内容作为一个字符串读取。
以下是在 PowerShell 2.0 中模拟 PowerShell 3.0+ -Raw
功能的两种方法:
$contents = [System.IO.File]::ReadAllText($path)
if ($contents -match $regex) {
$result = $matches[0]
}
或者:
$contents = Get-Content -Path $path | Out-String
if ($contents -match $regex) {
$result = $matches[0]
}
作为@HAL9256 的替代方案,您可以将字符串连接在一起:
[string]$contents = @(Get-Content -Path $path) -join [Environment]::NewLine
否则 Get-Content
returns 字符串数组。
if ($contents -match $regex)
{
$result = $matches[0]
}