Teste grep com expressão regular estendida:
$ echo "the life of the free" | grep -Eo "(\b[[:alnum:]]+\b)([[:blank:]]|[[:alnum:]]){1,10}"
the life of the
$ echo "he was and he his the same" | grep -Eo "(\b[[:alnum:]]+\b)([[:blank:]]|[[:alnum:]]){1,10}"
he was and he
Aqui -E significa regexp estendido, -o significa apenas imprimir a parte correspondente da linha, \b corresponde ao limite da palavra, a classe de caractere [[:alnum:]] significa todos os caracteres alfabéticos (maiúsculas e minúsculas) e numéricos , [[:blank:]] significa espaço ou tabulação, + significa uma ou mais ocorrências da correspondência anterior, {1,10} a correspondência anterior pode ocorrer entre 1 e no máximo 10 vezes, significa corresponder ao primeiro grupo correspondente (expresso entre o primeiro par de parênteses), isto é, \b[[:alnum:]]+\b .