在PowerShell中查找集合中的项目

时间:2014-06-11 14:00:04

标签: powershell

我有一个包含以下数据的文本文件:

1390 resource core\scripts\script.properties
1395 resource core\scripts\script.xml
1396 resource core\scripts\script_customer.xml
...

等等。

我还有一个args列表,例如file1.txtfile2.txt

我想做的是通过给定的文件名提取数字ID(如果存在)。

我写了以下内容,将文件内容读入集合:

$regex = "^(?<code>\d+)\s+(?<descriptor>\w+)\s+(?<filename>.*)$"

$results = Get-Content .\resources.txt |
   ForEach-Object {
      if ($_ -match $regex) {$matches} else { return }
   } | 
   select –Property @{name='code';       expression={$_.code} },
                    @{name='descriptor'; expression={$_.descriptor} },
                    @{name='filename';   expression={$_.filename} }

这给了我一个漂亮的列表中文件中的所有条目。

我现在如何查询$results,为args中包含文件名的任何条目提供code

e.g。在C#LINQ中,我做了类似的事情:

from arg in args
from result in results
where result.fileName.Contains(arg)
select result.code

1 个答案:

答案 0 :(得分:1)

试试这个(PSv3 +):

$results | where-object filename -match $arg | select-object -expand code