使用powershell,假设我有一个包含
的csv文件fname,lname,id,etc..
有没有办法使用where-object
查看所有列而不只是一列。
例如,而不是:
Import-csv location |where-Object {$_.fname -eq "hi"}
下一行:
Import-csv location |where-Object {$_.lname -eq "hi"} and so on.
这将是:
Import-csv location |where-Object {ANY -eq "hi"}
答案 0 :(得分:0)
是的,您可以迭代$_.psobject.Properties
来检查每一列,如果其中一列匹配,则返回$true
:
Import-Csv document.csv |Where-Object {
foreach($p in ($_.psobject.Properties |? {$_.MemberType -eq 'NoteProperty'})) {
if($p.Value -match "hi"){ $true }
}
}
答案 1 :(得分:0)
由于列标题/属性名称无关紧要,您关心的只是值,您可以将其作为文本处理:
Get-Content c:\somedir\somefile.csv |
Where {$_ -like '*"hi"*'}
如果您只是在计算之后,您可以只计算比赛数。如果需要对象,可以通过convertfrom-csv
运行匹配的行。