Powershell:仅返回搜索的第二行

标签 powershell

我正在尝试返回对 txt 文件执行的搜索的第二行结果。 数据格式为

Readings       : \\Server1\memory\available mbytes :
                 2107

我只想得到2107。 这是我到目前为止所拥有的:

$file = "D:\PerfTest.txt" # import data
$data = gc $file
$RAM = $Data | Select-String -Pattern "available mbytes :" | ForEach-Object -Context 1

但它给了我以下内容:

Readings       : \\Server1\memory\available mbytes :
                  2107

但我只想得到数字。请问有什么帮助吗?

谢谢

如果我使用的话,只是添加到上面

$RAM = $Data | Select-String -Pattern "available mbytes :" -Context 1 | Foreach {if ($_ -match '(\d+)$') {$matches[1]}}

它返回整数而不是小数。所以任何带小数的结果都是 78125 而不是 0.78125

最佳答案

正如已经pointed out in the comments-Context 应该是 Select-String 的参数,而不是 ForEach-Object

-Context 参数采用一个或两个整数来指示您想要包含的每个匹配项之前和之后的行数。

在您的例子中,您需要前面 0 行,后面 1 行,因此参数应该是 0,1。我可能不会将整个文件加载到变量中,而是直接将 Select-String 指向该文件:

$RAM = Select-String -Path $file -Pattern "available mbytes :" -Context 0,1 | ForEach-Object {
    +$_.Context.PostContext[0].Trim()
}

+ 将确保 $RAM 是整数而不是字符串

关于Powershell:仅返回搜索的第二行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33194543/

相关文章:

powershell - 在使用 powershell 创建站点时,有没有办法告诉它何时创建并准备好使用?

.net - 如何在 Visual Studio 中调试 Windows PowerShell 模块?

powershell - Powershell:通过字符串数组过滤文件的内容

powershell - 使用 Powershell 在具有服务计划的资源组中创建 Azure 网站(应用服务)

powershell - 创建 CSV 可导出对象数组时如何控制列名位置?

sql-server - Xp_CmdShell Powershell 脚本未找到有效模块

PowerShell:如何设置文化?

c# - 将 Powershell 命令添加到管道

powershell - 处理2个变量的有效方法

c# - System.DirectoryServices.ActiveDirectory 和 Microsoft.ActiveDirectory 之间的区别