テキスト ファイル (*.sql) のコレクションを検索して、9 で始まる 8 桁の数字を探しています。ファイル内にこれらの数字の複数のインスタンスが存在するだけでなく、ファイルの各行に複数のインスタンスが存在する可能性があります。出力に、各ファイル内の各 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 コマンドを改善できますか?
ありがとう!