powershell在csv中查找字符串获取关联的单元格

时间:2016-11-26 19:47:37

标签: powershell

好吧我有一个csv,我导入变量$ csv

name  description  system redundant
----  -----------  ------ ---------
hi    don't settle sight  dumb     
hello why not      settle settle   
this  just fails   why?   settle

我想在$ csv.description或$ csv.system中找到一个特定的字符串。如果找到该字符串,我想在$ csv.name

下返回相关的单元格值

我无法在$ csv.redundant中找到任何选择字符串

这是我到目前为止所做的:

$csv = import-csv -path c:\hi 
$find = $csv | select-string "settle" 

输出:$ find

@{name=hi; description=don't settle; system=sight; redundant=dumb }
@{name=hello; description=why not; system=settle; redundant=settle}
@{name=this; description=just fails; system=why?; redundant=settle}

但是 - 如果我执行$ find.name则没有返回,即使$ find.gettype()显示这是一个数组。此外,我不知道如何获取select-string以避免$ csv.redundant

我需要输出只是数组中前两个对象的$ find.name。

感谢

2 个答案:

答案 0 :(得分:2)

请勿使用Select-String,而是使用Where-Object

$searchTerm = 'settle'
$csv |Where-Object {$_.description -match $searchTerm -or $_.system -match $searchTerm} |Select-Object -Expand Name

答案 1 :(得分:0)

ipcsv C:\temp\test.csv | ? {$_.description, $_.system -like "*settle*"} | select Name