我有一个文本文件,其中包含很长的行。我需要从每一行中获取一条信息,并且需要查看唯一值。我最初的想法是使用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