O "|" também precisa de uma barra invertida para obter seu significado especial.
echo "blia blib bou blf" | sed 's/bl\(ia\|f\)//g'
fará o que você quiser.
Como você sabe, se tudo mais falhar, leia o manual: -).
Manual do usuário do GNU sed , seção 3.3 Visão geral do Regular Sintaxe de Expressão :
'REGEXP1\|REGEXP2'
Matches either REGEXP1 or REGEXP2.
Observe a barra invertida ...
Infelizmente, a sintaxe regex não é realmente padronizada ... existem muitas variantes, que diferem entre outras coisas nas quais "caracteres especiais" precisam \ e quais não. Em alguns, é até mesmo configurável ou depende de switches (como no GNU grep
, que você pode alternar entre três diferentes dialetos regex).
Esta resposta em particular é para o GNU sed . Existem outras variantes de sed
, por exemplo, a usada nos BSDs, que se comportam de maneira diferente.