Eu não garantirei que ele pegará todos os casos, mas que tal
grep -Po '\.so\.\K([0-9]+\.)*[0-9]+'
- corresponde e descarta o literal
.so.à esquerda (usando o modificador% FRP% do PCRE) - corresponde a zero ou mais ocorrências de um ou mais dígitos seguidos por
\K - corresponde a um ou mais dígitos
Observe que não queremos ancorá-lo no final da string ( . ) como sua expressão original, para permitir uma sequência à direita, como $