Кратко разбор трубы - PullRequest
       5

Кратко разбор трубы

1 голос
/ 01 июля 2010

У меня много вывода текста из инструмента, который я хочу проанализировать в Powershell 2.0.Выходные данные хорошо отформатированы, поэтому я могу создать регулярное выражение для извлечения данных, которые я хочу, используя select-string.Однако получение последующих совпадений из строки выбора кажется скучным.Должен быть более короткий путь?

Это работает:

p4 users | select-string "^\w+(.\w+)?" | 
    select -Expand Matches | %{p4 changes -u $_.Value}

Но все эти соответствия и значения многословны.В файле справки select-string нет ничего очевидного, но есть ли способ заставить его выкачивать только совпадения регулярных выражений в виде строк?Немного похоже:

p4 users | select-string "^\w(.\w+)?" -ImaginaryMagicOption | %{p4 changes -u $_}

1 Ответ

2 голосов
/ 01 июля 2010

В этом случае может быть немного проще использовать -match например:

p4 users | Foreach {if ($_ -match '^\w+(.\w+)?') { p4 changes -u $matches[0] }}

Это только потому, что выходные данные Select-String являются объектом MatchInfo, который скрывает информацию о совпадениях на один уровень ниже,OTOH это может быть сделано для работы:

p4 users | Select-String "^\w+(.\w+)?" | 
    Foreach {p4 changes -u $_.Matches[0].Value}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...