2016-10-25 41 views
0

我有一個文本文件,它看起來像這樣:我正在尋找三個或更多的比賽來輸出到一個文件如何在PowerShell中查找X個匹配項?

&123456/Some Data/741852 
&654321/Some Data/963852 
&987654/Some Data/325698 
&123456/Some Data/789456 
&321654/Some Data/789456 
&987654/Some Data/471852 
&123456/Some Data/987654 
&987654/Some Data/845786 
...

。所需的輸出低於:

File1.txt

&123456/Some Data/741852 
&123456/Some Data/789456 
&123456/Some Data/987654

File2.txt

&987654/Some Data/325698 
&987654/Some Data/471852 
&987654/Some Data/845786

下面是我試圖找到計數,但還沒有完全想通了如何輸出功能到文件:

function GetUserCounts($fileName) { 
    $userCounts = @{} 
    switch -regex -file $fileName { 
     '&([0-9]{6})+' { 
      $userName = $matches[1] 
      $userCounts[$userName] = [int]$userCounts[$userName] + 1 
     } 
    } 
    $userCounts.GetEnumerator() | select Name, Value 
} 

GetUserCounts .\FinalTest.txt 
+0

請不要bu ry中的相關信息。如果您需要擴展它,請編輯您的問題。這次我冒昧地爲你做了。 –

+0

感謝您將這些信息添加到我的問題中。這是我第一次在這個論壇上。我會知道下次。 – red2015

回答

3

使用Group-Object用於通過線的特定部分進行分組的結果:

Get-Content 'C:\path\to\your.txt' | Group-Object { ($_ -split '/')[0] } 

然後篩選具有3個或更多的匹配組:

... | Where-Object { $_.Count -ge 3 } 

並且每個組寫入到文件:

... | ForEach-Object { $i++; $_.Group | Set-Content "File$i.txt" } 
+0

這正是我正在尋找的!非常感謝! – red2015

0

試試這個

$i=0 
import-csv C:\temp\campaigns.txt -Delimiter "/" -Header id, data, num | group id | % {$i++; $_.Group | export-csv "C:\temp\file$i.txt" -NoTypeInformation -Delimiter "/" } 
+0

將文件視爲CSV假定「某些數據」不包含分隔符。此外,'Export-Csv'不僅會添加標題,還會在導出的值周圍添加雙引號。 –

相關問題