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
.