PowerShell, как разделить текстовый файл на несколько, основанный на изменении значения в строке - PullRequest
0 голосов
/ 28 апреля 2019

Я новичок в Powershell, и мне нужна помощь с требованием, которое может дать результаты (выполненные) очень быстро с помощью PowerShell.

У меня есть текстовый файл с данными, который содержит около 500000 записей и около 100 полей с разделителями (|). Первое поле содержит дату в формате ГГГГММДД. Мне нужно разделить большой файл каждый раз, когда происходит изменение этого значения. Например, если файл содержит около 100 различных дат, файл должен быть разбит на 100 файлов.

Я даю выборочный набор данных для справки только с 3 полями. Имя файла в test1.txt. Полученные файлы должны быть названы как test1_00001.txt, test1_00002.txt, ......, test1_00100.txt.

Предположим, входной файл test.txt содержит следующие записи:

20190227|00001|VALUE1  
20190227|00001|VALUE1  
20190227|00001|VALUE2  
20190227|00002|VALUE3  
20190228|00005|VALUE3  
20190228|00001|VALUE2  
20190228|00002|VALUE1  
20190301|00001|VALUE1  
20190301|00300|VALUE7  
20190301|00004|VALUE7  
20190301|00004|VALUE1  
20190301|00002|VALUE5  

Результирующий файл test_00001.txt должен содержать следующие записи:

20190227|00001|VALUE1  
20190227|00001|VALUE1  
20190227|00001|VALUE2  
20190227|00002|VALUE3  

Результирующий файл test_00002.txt должен содержать следующие записи:

20190228|00005|VALUE3  
20190228|00001|VALUE2  
20190228|00002|VALUE1  

Результирующий файл test_00002.txt должен содержать следующие записи:

20190301|00001|VALUE1  
20190301|00300|VALUE7  
20190301|00004|VALUE7  
20190301|00004|VALUE1  
20190301|00002|VALUE5  

1 Ответ

0 голосов
/ 28 апреля 2019

Почему бы не использовать дату как часть нового имени файла?

Get-Content .\test1.txt | %{Add-Content -path "test$($_.split('|')[0]).txt" -Value $_}

Вы можете поэкспериментировать с параметром Get-Content -ReadCount для ускорения.

...