我有一個文本文件,其中包含很長的行。我需要從每一行中獲取一條信息,並且需要查看唯一值。我最初的想法是使用Select-String並用捕獲組指定正則表達式。我看了幾個其他職位,但沒有工作。這裏是快速和骯髒的C#等價物:選擇字符串來grep,但只返回唯一的組
var text = File.ReadAllText(@"path\File.txt");
var r = new Regex("Path=\"(.*?)\"");
var matches = r.Matches(text);
var h = new HashSet<string>();
foreach(Match match in matches)
{
h.Add(match.Groups[1].Value);
}
foreach (var s in h)
{
Console.WriteLine(s);
}
我該如何在PowerShell中做到這一點?
UPDATE:
測試的答案,我意識到有一個額外的要求。每個源代碼行可以有多個匹配項。例如:
Path="One" Path="Two" Path="Two" Path="Three"
結果應該是:
One Two Three
請參閱上面的更新。另請注意,文本來自文件。 – TrueWill
更新了新的要求。 – mjolinor
這工作除了獲得獨特的。如果我用select-object -Unique替換它,它完美地工作。就我個人而言,我發現這比「[正則表達式]」的答案更清晰。 – TrueWill