我有一个看起来像这样的文本文件:
&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 :(得分: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" }
答案 1 :(得分: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 "/" }