如何解析文件中大于x的数字

时间:2013-11-15 03:18:28

标签: powershell

Powershell新手在这里,上个月开始玩它。我一直在试图找出使用它的方法,现在我正试图从我们的一些unix服务器中提取信息,并且很难解析数据以获得我需要的东西。基本上,我正在运行一个ssh命令来拉取服务器上的closed_waits并将其输出到一个文件,其中服务器名称用逗号分隔。所以我的输出看起来像这样:

2,<server1>
3,<server2>
3,<server3>

等......列表中有大约70个服务器。我希望能够查看第一列(#)以及任何超过特定数字的列,例如250,并使用服务器名称输出。我已经能够分割线并只搜索#,但无法弄清楚如何只搜索#而不将其拉出来,这样我就可以输出服务器名称了。

我的最后一次尝试仍然不起作用:

get-content "cresultsf.txt" | %{$close = $_.split(","} | where-object {$_.$close[0] -gt 250}

上个月挑选了PS脚本,所以我对此非常陌生。我今天可能已经阅读了100篇文章试图把它放在一起,所以任何帮助将不胜感激!谢谢!

2 个答案:

答案 0 :(得分:4)

我尝试了以下内容:

的text.txt:

1, server1
200, server2
1, server3
400, server4
15, server5
119, server6
120, server7
300, server8
290, server9

我的命令:

$data = import-csv -path .\test.txt -header close, server
$data | where-object{$_.close -gt 250} |format-table -autosize

,输出为:

close server
----- ------
400   server4
300   server8
290   server9    

答案 1 :(得分:1)

需要V3:

get-content "cresultsf.txt" | %{
 [PSCustomObject]@{
               $split = $_.split(',')
               Close = [int]$split[0]
               Server = $split[1]
               }
 } | where { $_.close -gt 250 }

Powershell是关于对象的,所以如果你创建然后使用对象通常会更容易。 [PSCustomObject]类型加速器允许您直接从哈希表创建对象。由于您正在从文件中读取文本数据,因此所有值都将为[string]。 Close属性是[int]的明显大小写,以防止在进行比较时出现意外结果。