Eu criei duas opções usando o diff que deve funcionar para você.
Usando diff -u e sed:
diff -u old new | sed -n 's/^-\(.*\.so\..*\)//p'
/usr/lib/libfoo.so.1
/usr/lib/libfooabc.so.1
- Esse comando gera a diferença completa entre os dois arquivos e usamos
sed para filtrar apenas as alterações do arquivo 'antigo' (indicado por
um líder -) e outro filtro no diff contendo
.so.
. Para tira o - da saída do diff usamos uma referência anterior para imprimir tudo menos isso.
Usando formatação de saída do diff e grep
Duas variantes na mesma coisa; o segundo é mais curto, ambos se comportam de forma idêntica um ao outro e ao exemplo anterior.
diff --old-line-format='%L' --unchanged-line-format= --new-line-format= old new | grep '\.so\.'
ou um pouco melhor:
diff --changed-group-format='%<' --unchanged-line-format= old new | grep '\.so\.'
Você pode conseguir que o diff faça o trabalho sozinho - ele tem filtragem de regex (-I ignore flag), mas ele se comporta de maneira estranha quando você precisa inverter o regex. Eu nunca tive muita sorte com isso.