Dois métodos: com expressões regulares:
grep "phrase1 .* phrase2" file
Esta pesquisa por frase1, um espaço, uma sequência de caracteres que pode ser o que você quiser, outro espaço e a frase2, em qualquer lugar da linha (corresponde a linhas com mais material antes de "frase1" e depois de "frase2" )
Se as duas frases tiverem que estar no início e no fim da linha, veja @AndreasT answer: você pode usar ^
e $
para "ancorar" a expressão regular no início e no final da linha.
Se você quiser combinar apenas os números entre as duas frases, a resposta de minerz029 é a correta; "[0-9] +" corresponde a uma repetição de dígitos ("+" significa "uma sequência de pelo menos um caractere").
Se você quiser apenas números e frase1 e frase2 devem estar no início e no final da frase, combine os dois:
grep "^phrase1 [0-9]+ phrase2$" file
Ou o "truque" / hack ...
grep "phrase1" file | grep "phrase2"
Explicação: o primeiro comando procura todas as ocorrências de frase1 e, em seguida, "canaliza" as linhas resultantes como entrada para o segundo grep, que gera todas as linhas correspondentes a frase2.
No entanto, conforme notado por @AndreasT, esse segundo método corresponde ao padrão reverso "frase2 ... frase1", que pode ser indesejado.