我正在搜索文本文件 (*.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
ETC....
我想做的是扩展数组,这样当我通过 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
ETC...
我怎样才能做到这一点?我当前的 powershell 命令可以改进吗?
谢谢!