【问题标题】:How to select specific string from output in Powershell如何从 Powershell 的输出中选择特定字符串
【发布时间】:2018-02-20 08:51:13
【问题描述】:

当我想从 powershell 中的输出中选择特定文本时,我可以使用

select-string -Pattern "whatever:"

它会打印出任何列。但是当我在这个输出上尝试同样的事情时,它会打印出行而不是列。

所以我喜欢这样:

> /c0 show | select-string -Pattern "EID:Slt"

它没有显示该列,而是显示:

> EID:Slt DID State DG Size Intf Med SED PI SeSz Model        
> Sp

我能弄清楚的唯一方法是用空格替换所有字符,但这样做有点麻烦,其他人可以帮忙输入吗?

我如何尝试让它显示输出文本:32:1、32:2、32:3、[...]

控制器 = 0 状态 = 成功 说明 = 显示驱动器信息成功。 驱动信息: ================== -------------------------------------------------- ---------------------- EID:Slt DID State DG Size Intf Med SED PI SeSz Model Sp -------------------------------------------------- ---------------------- 32:0 0 Onln 0 3.637 TB SATA HDD N N 512B ST4000NM0033-9ZM170 U 32:1 1 Onln 1 3.637 TB SATA HDD N N 512B ST4000NM0033-9ZM170 U 32:2 2 Onln 1 3.637 TB SATA HDD N N 512B ST4000NM0033-9ZM170 U 32:3 3 Onln 1 3.637 TB SATA HDD N N 512B ST4000NM0033-9ZM170 U 32:4 4 Onln 1 3.637 TB SATA HDD N N 512B ST4000NM0033-9ZM170 U 32:5 5 Onln 1 3.637 TB SATA HDD N N 512B ST4000NM0033-9ZM170 U 32:6 6 Onln 1 3.637 TB SATA HDD N N 512B ST4000NM0033-9ZM170 U 32:7 7 Onln 1 3.637 TB SATA HDD N N 512B ST4000NM0033-9ZM170 U -------------------------------------------------- ----------------------

【问题讨论】:

  • 您似乎正在接近 cmd 等 powershell,其中输出只是屏幕上要操作的字符串; /c0 show 是什么?如果我运行它,我只会得到一个错误,您的答案可能在于将此输出视为它(希望)是的对象。如果你输入/c0 show | gm,你会看到什么?
  • 这是一个来自戴尔的命令行程序,在 cmd 中运行,您可以在其中 RAID 磁盘和其他很棒的东西。但为此,我需要将要被突袭的磁盘。我设法使用 Intel 的 Rapid Storage 命令行界面来做到这一点,因为它更直接,所以我考虑在不支持 Intel CLI 的戴尔服务器上进行尝试。该命令显示了我的 PERC 控制器上的所有硬盘。我认为在 powershell 中执行它而不是创建批处理文件会更容易。运行该命令会显示粘贴在上面文本中的输出。是的,因为我一直在使用 cmd latley
  • 啊,好吧,如果它是第 3 方程序,它可能会将输出作为字符串返回,下面 Janne 的回答应该是你需要做的。

标签: powershell


【解决方案1】:

您不能只匹配所需列中的数据模式吗?第一列似乎总是在行的开头,有两个数字,后跟一个冒号和一个数字。你可以用这个来提取它们:

Select-String -Pattern "^\d{2}:\d" -AllMatches | % { $_.Matches.Value }

要使用标题行中的属性名称从整个表中获取数据,您最好将它们解析为固定长度字段。但是,如果您只需要一列,上述内容就足够了。

【讨论】:

  • 感谢您的帮助,我必须阅读它,我不知道您可以在 Powershell 中这样做。再次感谢您
  • 管道输出后发生了什么?具体来说` | % { $_.Matches.Value }. Is %` 某些 PowerShell 命令的简写?
猜你喜欢
  • 1970-01-01
  • 2016-07-08
  • 1970-01-01
  • 2017-07-28
  • 1970-01-01
  • 2015-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多