列中的Powershell搜索命中率&;返回列名

列中的Powershell搜索命中率&;返回列名,powershell,powershell-ise,powershell-5.0,Powershell,Powershell Ise,Powershell 5.0,我正在寻找一种方法(如果可能的话)来查找任何包含“;”分号字符的列中的任何点击,并返回列/字段名 我基本上是加载一个DAT分隔的文本文件(或csv)。每次的标题都会不同,但我基本上是想弄清楚我是否希望任何列在列中包含多分隔值,例如email CC或BCC 我正在使用带有文本框的表单来输入DAT/CSV $form.Topmost = $True $form.Add_Shown({$textBox.Select()}) $result = $form.ShowDialog() if ($res

我正在寻找一种方法(如果可能的话)来查找任何包含“;”分号字符的列中的任何点击,并返回列/字段名

我基本上是加载一个DAT分隔的文本文件(或csv)。每次的标题都会不同,但我基本上是想弄清楚我是否希望任何列在列中包含多分隔值,例如email CC或BCC

我正在使用带有文本框的表单来输入DAT/CSV

$form.Topmost = $True

$form.Add_Shown({$textBox.Select()})
$result = $form.ShowDialog()

if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
    $x = $textBox.Text 
    $x
}
以下是我的输出文件代码:

  Get-Content $x |
    foreach {$_ -replace "þ", '"'} |
    ConvertFrom-Csv -Delimiter "" |
    Out-GridView 
我已经能够通过以下方式搜索整个CSV的点击率:

$FileContent = Get-Content $x
$Matches = Select-String -InputObject $FileContent -Pattern ';' -AllMatches
$Matches.Matches.Count
上面的部分确实给了我“;”点击的总数。但我更希望看到哪些列被点击,我并不需要总计数,只需要标题名或列号


我正在使用powershell ISE v5

我会使用Select字符串来查找初始命中,这比循环遍历每一列和每一行要快。您可以通过将找到的每一行转换为CSV,然后再转换为对象来循环结果。然后,您只需循环遍历每个属性并输出结果。大概是这样的:

$file = 'your_file.csv'
$head = Get-Content $file -TotalCount 1
$re = ';'

Select-String $file -Pattern $re | % {
  $line = $_
  $item = $head + "`n" + $_.line | ConvertFrom-Csv
  $item | gm -MemberType NoteProperty | select -ExpandProperty Name | % {
    if($item."$_" -match $re) {
      New-Object psobject -property @{
        Column = $_
        Row = $line.Linenumber
        Value = $item."$_"
      }
    }
  }
}

我会使用一个Select字符串来查找初始命中,这比循环遍历每一列和每一行要快。您可以通过将找到的每一行转换为CSV,然后再转换为对象来循环结果。然后,您只需循环遍历每个属性并输出结果。大概是这样的:

$file = 'your_file.csv'
$head = Get-Content $file -TotalCount 1
$re = ';'

Select-String $file -Pattern $re | % {
  $line = $_
  $item = $head + "`n" + $_.line | ConvertFrom-Csv
  $item | gm -MemberType NoteProperty | select -ExpandProperty Name | % {
    if($item."$_" -match $re) {
      New-Object psobject -property @{
        Column = $_
        Row = $line.Linenumber
        Value = $item."$_"
      }
    }
  }
}

ipcsv$x |%{$|.PSObject.Properties}|?值-匹配“;”|%名称
ipcsv$x |%{$|.PSObject.Properties}|?值-匹配“;”|%名称