Если ваш grep
поддерживает Perl-совместимое регулярное выражение ( -P
), вы можете сделать:
grep -Po '(?<=^|\s)\d[^\s]*(?=\s|$)' file.txt
Предполагая под словом
вы имели в виду символы, разделенные только пробелами
? <= ^ | \ s)
- это шаблон положительного просмотра с нулевой шириной, гарантирующий, что нашему желаемому слову предшествует либо начало строки или пробел
\ d [^ \ s] *
- это наше желаемое совпадение, слово, начинающееся с цифры
(? = \ s | $)
- это шаблон положительного просмотра вперед нулевой ширины, обеспечивающий наш желаемое совпадение сопровождается пробелом или концом строки.
Я думаю, что это решение работает на основе этого ответа суперпользователя:
( /opt/mssql/bin/sqlservr & ) | grep -q "Service Broker manager has started" && /opt/mssql-tools/bin/sqlcmd -i whatever.sql && pkill sqlservr