Есть ли ожидание, чтобы «разорвать» цикл ожидания от Get-Content в powershell? - PullRequest
0 голосов
/ 09 июня 2018

Есть ли ожидание, чтобы "разорвать" цикл ожидания от Get-Content в powershell?

Get-Content "$PSScriptRoot\out.txt" -Wait

out.txt имеет фиксированное число записываемых строк, и я хочу остановить цикл, когдаконец достигнутДо сих пор мне нужно отправить сигнал с "Ctrl + C", чтобы закончить.В псевдокоде это будет что-то вроде

Get-Content "$PSScriptRoot\out.txt" -WaitUntil 9
Get-Content "$PSScriptRoot\out.txt" -WaitUntilMatch "^LastOutput"

, поэтому при выводе 9 строк мы нарушаем цикл.Или когда будет достигнуто определенное соответствие регулярному выражению, мы можем разорвать цикл?

Ответы [ 2 ]

0 голосов
/ 09 июня 2018

Вы можете использовать Select-Object -First n, чтобы остановить конвейер после n элементов:

Get-Content -Path "$PSScriptRoot\out.txt" -Wait  | select -first 9

(Хотя мне нравится идея добавления -WaitUntil и -WaitMatch к Get-Content. Возможно, стоитоткрытие проблемы в репозитории PowerShell Github )

0 голосов
/ 09 июня 2018

Вы можете передавать значение из Get-Content в ForEach-Object и прерывать при выполнении условия.

Например, если вы хотите разбить при достижении определенного соответствия регулярному выражению, вы можете использовать следующее:

Get-Content -Path "$PSScriptRoot\out.txt" -Wait | ForEach-Object {$_ ; if($_ -Match "some regex"){break} }

Если вы хотите разбить после n строк, то какБрюс ответил, что вы можете использовать Select-Object -Frist n.

. Обратите внимание, что если файл уже содержит контент, удовлетворяющий условиям, и вам нужны только новые данные, добавляемые в файл, вам также следует использовать *Опция 1009 *.

Например, если файл уже содержит 9 строк, и вы хотите, чтобы только 9 первых строк были добавлены в файл после того, как вы запустите команду, используйте:

Get-Content -Path "$PSScriptRoot\out.txt" -Wait -tail 1 | select -skip 1 -first 9

При -tail 1 команда выведет только последнюю строку файла и новые данные, которые впоследствии будут добавлены в файл.-skip 1 используется для фильтрации последней строки и вывода только новых данных.

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