Le "|" a également besoin d'une barre oblique inversée pour obtenir sa signification spéciale.
echo "blia blib bou blf" | sed 's/bl\(ia\|f\)//g'
fera ce que vous voulez.
Comme vous le savez, si tout le reste échoue, lisez le manuel :-).
Manuel de l'utilisateur de GNU sed , section 3.3 Aperçu de la syntaxe des expressions régulières :
`REGEXP1\|REGEXP2'
Correspond soit à REGEXP1, soit à REGEXP2.
Notez la barre oblique inversée...
Malheureusement, la syntaxe des regex n'est pas vraiment standardisée... il existe de nombreuses variantes, qui diffèrent entre autres par les "caractères spéciaux" qui doivent être utilisés et ceux qui ne le doivent pas. Dans certaines, elle est même configurable ou dépend de commutateurs (comme dans GNU grep
qui vous permet de basculer entre trois dialectes d'expressions rationnelles différents).
Cette réponse s'adresse en particulier à GNU sed . Il existe d'autres sed
des variantes, par exemple celle utilisée dans les BSD, qui se comportent différemment.