Usando o GNU grep
construído com suporte a PCRE recente:
echo 'st Hello world! et' | grep -oP "st\K.*?(?=et)"
A chave aqui é usar as asserções look-ahead e look-behind-zero-length.
\K ==> Look-behind assertion
(?=et) ==> Look-ahead assertion
Para mais informações, você pode ler aqui .