Observe que \b , em grep implementações que o suportam, é para a transição entre um caractere de palavra (alnum e sublinhado) e um caractere não de palavra (ou vice-versa). Então, \bPattern\b corresponderia em foo-Pattern.bar , por exemplo.
Se você está procurando uma palavra em Pattern delimitada em branco, não é possível usar \b .
Aqui, parece que você está procurando por um Pattern delimitado em branco, seguido por uma lista de zero ou mais strings delimitadas em branco que possuem caracteres diferentes de letras e - , portanto:
non_word='([^[:blank:]]*[^[:blank:][:alpha:]-][^[:blank:]]*)'
grep -E "(^|[[:blank:]])Pattern([[:blank:]]+$non_word)*[[:blank:]]*$"