【问题标题】:Powershell looking through all columns searching for a keywordPowershell 浏览所有列以搜索关键字
【发布时间】:2015-04-09 22:10:19
【问题描述】:

使用 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"}

【问题讨论】:

  • 我会计算总数,这就是我需要这样做的原因
  • 你昨天问了同样的问题:stackoverflow.com/questions/29529154/…
  • 这与您上一个问题有何不同?这应该彻底关闭,如果您不喜欢那里的答案,请更新您的问题,我们可以再次查看。

标签: powershell csv search


【解决方案1】:

是的,您可以遍历 $_.psobject.Properties 来检查每一列,如果其中一个匹配,则返回 $true

Import-Csv document.csv |Where-Object {
    foreach($p in ($_.psobject.Properties |? {$_.MemberType -eq 'NoteProperty'})) {
        if($p.Value -match "hi"){ $true }
    }
}

【讨论】:

    【解决方案2】:

    由于列标题/属性名称无关紧要,您只关心值,因此您可以将其作为文本处理:

    Get-Content c:\somedir\somefile.csv |
    Where {$_ -like '*"hi"*'}
    

    如果您只是在计数,您可以只计算匹配项。如果你想要对象,你可以通过convertfrom-csv运行匹配的行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-20
      • 2018-07-03
      • 2021-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多