要獲得文件路徑到您的輸出,您需要將其分配給第一個管道中的變量。
這是類似於你需要的東西嗎?
$ht = @{}
Get-ChildItem -recurse -Filter *.xml | %{$path = $_.FullName; Get-Content $path} | % { $ht[$_] = $ht[$_] + $path + ";"}
上面的代碼將在「配置行」 =「計數」的格式返回一個哈希表。
編輯:
如果您需要返回三個元素(獨特的路線,計數和它被發現的路徑數組)它變得更加複雜。這是一個將返回一個PSObject的數組的代碼。每個包含XML文件中唯一一行的信息。
$ht = @()
$files = Get-ChildItem -recurse -Filter *.xml
foreach ($file in $files) {
$path = $file.FullName
$lines = Get-Content $path
foreach ($line in $lines) {
if ($match = $ht | where {$_.line -EQ $line}) {
$match.count = $match.count + 1
$match.Paths += $path
} else {
$ht += new-object PSObject -Property @{
Count = 1
Paths = @(,$path)
Line = $line }
}
}
}
$ht
我相信它可以縮短和優化,但希望它足以讓你開始。
您只需要計數爲1的行的位置? – mjolinor
其實那些有多個 – NobleMan
所以,而不是一個計數,你想積累的文件路徑列表? – mjolinor