ฉันกำลังค้นหาคอลเลกชั่นของไฟล์ข้อความ (*.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 ปัจจุบันของฉันสามารถปรับปรุงได้หรือไม่
ขอบคุณ!