Na verdade o que deve ser observado é o padrão do texto a ser manipulado.

Por exemplo?
utilizarei o seguinte: .*\(soma\).* jogado dentro de um sed.
bem simples :

echo "Teste ()74h4h soma kkssjsj" |sed 's/.*\(soma\).*/\1/'
soma
echo "soma" |sed 's/.*\(soma\).*/\1/'
soma
echo "int soma(int num1, int num2){ " |sed 's/.*\(soma\).*/\1/'
soma

Nisso estou considerando que vc quer a palavra soma não importa onde ela estiver.
Porem veja o que ocorre num descuido do usuario:

echo "int so2ma(int num1, int num2){ " |sed 's/.*\(soma\).*/\1/'
int so2ma(int num1, int num2){

Acabou com a syntaxe do comando, neste caso eu precisaria adicionar um tratamento para isso. Ouse ja, a melhor Er , glob , coringa , comando ... oque or , vai depender do padrão de texto que vc tem.

Falou.