Я ищу набор текстовых файлов (*.sql) на наличие 8-значных чисел, начинающихся с 9. В файле может быть несколько экземпляров этих чисел, а также несколько экземпляров в каждой строке файла. Я только хочу, чтобы на выходе отображалось уникальное появление каждого 8-значного числа в каждом файле. Это то, что у меня есть до сих пор:
Select-String "9[0-9]{8}" "*.sql" -AllMatches | Select-Object FileName, @{N="Value";E={ $_.matches | %{$_.groups[0].value}}} | Select-Object -unique FileName,Value
И мой вывод выглядит так:
FileName Value
-------- -----
File1.sql 907520714
File1.sql {907500507, 907520700, 907520701, 907520703...}
File1.sql {907520725, 907520727, 907520728, 907520729}
File1.sql 990140600
File2.sql 990319161
File2.sql {990603919, 990603925, 990603926}
File2.sql {991100103, 991100103}
File2.sql {990700023, 990700504, 990700521, 990740520...}
File3.sql 907500044
так далее....
Что я хотел бы сделать, так это расширить массивы, чтобы при передаче через select -unique я фактически получал только уникальные 8-значные числа, содержащиеся в каждом файле.
Это то, что я хотел бы:
FileName Value
-------- -----
File1.sql 907520714
File1.sql 907500507
File1.sql 907520700
File1.sql 907520701
File1.sql 907520703
File1.sql 907520725
File1.sql 907520727
File1.sql 907520728
File1.sql 907520729
File1.sql 990140600
File2.sql 990319161
File2.sql 990603919
File2.sql 990603925
File2.sql 990603926
File2.sql 991100103
File2.sql 990700023
File2.sql 990700504
File2.sql 990700521
File2.sql 990740520
File3.sql 907500044
так далее...
Как я могу это сделать? И можно ли улучшить мою текущую команду powershell?
Спасибо!