Mam plik tekstowy zawierający bardzo długie wiersze. Potrzebuję jednej informacji z każdej linii i muszę zobaczyć unikalne wartości. Moją pierwotną myślą było użycie Select-String i określenie wyrażenia regularnego z grupą przechwytującą. Sprawdziłem kilka innych postów, ale żaden nie działał. Oto szybki i-brudny C# równoważne:Wybierz ciąg do grep, ale po prostu zwróć unikalne grupy.
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);
}
Jak mogę to zrobić w PowerShell?
UPDATE:
Testowanie odpowiedzi, zdałem sobie sprawę, istnieje dodatkowy wymóg. W wierszu źródłowym może być wiele dopasowań. Przykład:
Path="One" Path="Two" Path="Two" Path="Three"
Wyniki powinny być:
One Two Three
Proszę zobaczyć aktualizację powyżej. Zwróć też uwagę, że tekst pochodzi z pliku. – TrueWill
Zaktualizowano dla nowych wymagań. – mjolinor
To działało, z wyjątkiem unikalności. Jeśli zastąpiłem to wybranym-obiektem -Unique, zadziałało idealnie. Osobiście uważam to za jaśniejsze niż odpowiedzi "[regex]". – TrueWill