Запустите команду в фоновом режиме, подождите конкретной строки журнала, затем запустите новую команду на переднем плане

Если ваш grep поддерживает Perl-совместимое регулярное выражение ( -P ), вы можете сделать:

grep -Po '(?<=^|\s)\d[^\s]*(?=\s|$)' file.txt
  • Предполагая под словом вы имели в виду символы, разделенные только пробелами

  • ? <= ^ | \ s) - это шаблон положительного просмотра с нулевой шириной, гарантирующий, что нашему желаемому слову предшествует либо начало строки или пробел

  • \ d [^ \ s] * - это наше желаемое совпадение, слово, начинающееся с цифры

  • (? = \ s | $) - это шаблон положительного просмотра вперед нулевой ширины, обеспечивающий наш желаемое совпадение сопровождается пробелом или концом строки.

-1
27.07.2018, 20:21
1 ответ

Я думаю, что это решение работает на основе этого ответа суперпользователя:

( /opt/mssql/bin/sqlservr & ) | grep -q "Service Broker manager has started" && /opt/mssql-tools/bin/sqlcmd -i whatever.sql && pkill sqlservr

0
28.01.2020, 05:12

Теги

Похожие вопросы