Строка выбора применяется к нескольким строкам ввода - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть файл вроде:

abc WANT THIS
def NOT THIS
ghijk WANT THIS
lmno DO NOT LIKE
 pqr WANT THIS
...

Из которого я хочу извлечь:

abc
ghijk
pqr

Когда я применяю следующее:

(Select-String -Path $infile -Pattern "([^ ]+) WANT THIS").Matches.Groups[1].Value >$outfile

Этовозвращает только совпадение для первой строки:

abc

(добавление -AllMatches не изменило поведение)

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Вы можете использовать

Select-String -path $infile -Pattern '^\s*(\S+) WANT THIS' -AllMatches | Foreach-Object {$_.Matches} | Foreach-Object {$_.Groups[1].Value} > $outfile

Шаблон ^\s*(\S+) WANT THIS будет соответствовать

  • ^ - начало строки
  • \s* - 0+ пробельные символы
  • (\S+) - Группа 1: один или несколько непробельных символов
  • WANT THIS - буквальная подстрока.

Now, -AllMatchesсоберет все совпадения, затем вам нужно будет выполнить итерацию по всем совпадениям с помощью Foreach-Object {$_.Matches} и получить доступ к значениям группы 1 (с помощью Foreach-Object {$_.Groups[1].Value}), а затем сохранить результаты в выходном файле.

0 голосов
/ 28 сентября 2018

Перечитывание кода, его совпадение со всеми, но только запись значения первого совпадения (дох!)объект также содержит «не захваченный» контент !!!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...