如何从Powershell中的输出中选择特定字符串

时间:2018-02-20 08:51:14

标签: powershell

当我想从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,[...]

Controller = 0
Status = Success
Description = Show Drive Information Succeeded.


Drive Information :
=================

--------------------------------------------------------------------------
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  
--------------------------------------------------------------------------

1 个答案:

答案 0 :(得分:1)

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

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

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