格式化表格结果

时间:2013-07-15 00:14:11

标签: powershell format output tabular

我的下面的脚本通过许多txt文件递归搜索特定的部件号(459279)。

set-location C:\Users\admin\Desktop\PartNumbers\
$exclude = @('PartNumbers.txt','*.ps1')
$Line = [Environment]::NewLine
Get-ChildItem -Recurse -Exclude $exclude | select-string 459279 | group count | Format-Table -Wrap -AutoSize -Property Count,
@{Expression={$_.Group | foreach { $_.filename} | Foreach {"$_$Line"} }; Name="Filename"},
@{Expression={$_.Group | foreach {$_.LineNumber} | Foreach {"$_$Line"} }; Name="LineNumbers"} | Out-File 459279Results.txt

我的结果是:

Count Filename                           LineNumbers
----- --------                           -----------
    2 {Customer1.txt                     {2         
      , Customer2.txt                    , 3        
      }                                  }          

如果可能的话,我的理想结果是:

Part Number: 459279
Count: 2

Filename                           LineNumbers
--------                           -----------
Customer1.txt                      2         
Customer2.txt                      3        

我手动从“PartNumbers.txt”中检索了部件号“459279”,并使用该脚本进行了搜索。

我似乎无法移除/替换大括号和逗号以显示清单。

我希望最终做的是递归搜索“PartNumbers.txt”并生成一个报告,其中每个部件编号都附加到上面提到的样式中。

PartNumbers.txt的格式为:

895725
939058
163485
459279
498573

客户* .txt的格式为:

163485
459279
498573

1 个答案:

答案 0 :(得分:1)

这样的事情应该有效:

$exclude = 'PartNumbers.txt', '*.ps1'
$root    = 'C:\Users\admin\Desktop\PartNumbers'
$outfile = Join-Path $root 'loopResults.txt'

Get-Content (Join-Path $root 'PartNumbers.txt') | % {
  $partno = $_
  $found = Get-ChildItem $root -Recurse -Exclude $exclude `
             | ? { -not $_.PSIsContainer } `
             | Select-String $partno `
             | % {
               $a = $_ -split ':'
               New-Object -Type PSCustomObject -Property @{
                 'Filename'    = Split-Path -Leaf $a[1];
                 'LineNumbers' = $a[2]
               }
             }

  "Part Number: $partno"
  'Count: ' + @($found).Count
  $found | Format-Table Filename, LineNumbers
} | Out-File $outfile -Append