Я ищу способ отфильтровать список строк в powershell по регулярному выражению, а затем сгруппировать и отсортировать по одной из групп захвата.
Представьте, что мой список такой:
bogus0
ACBXYZ-0000 hello
bogus1
ACBXYZ-0000 hello again
bogus2
ACBXYZ-0001 world
bogus3
ACBXYZ-0001 world
Сначала я сделал это:
$list | select-string "^(ACBXYZ-\d+)(.*)"
Какие выводы
ACBXYZ-0000 hello
ACBXYZ-0000 hello again
ACBXYZ-0001 world
ACBXYZ-0001 world
Тогда я сделал это:
$list | select-string "^(ACBXYZ-\d+)(.*)" | % { "$($_.Matches[0].Groups[1].Value), $($_.Matches[0].Groups[2].Value.Trim(' ,-'))" } | sort | group | select name
Какие выводы
Name
----
ACBXYZ-0000, hello
ACBXYZ-0000, hello again
ACBXYZ-0001, world
Но на самом деле я хотел бы вывести это:
Name
----
ACBXYZ-0000, hello
ACBXYZ-0001, world
так как сообщение после номера приятно иметь, но не очень важно.
Есть идеи?
PS: я смог добиться этого с помощью более сложного сценария, но я искал однострочник.