2016-10-25 5 views
0

У меня есть текстовый файл, который выглядит следующим образом:Как найти X количество совпадений в PowerShell?

&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

Пожалуйста, не будьте в соответствующих комментариях. [edit] ваш вопрос, если вам нужно его расширить. На этот раз я взял на себя смелость сделать это за вас. –

+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' не только добавит заголовок, но и двойные кавычки вокруг экспортированных значений. –