回答:
「|」特別な意味を得るためにバックスラッシュも必要です。
echo "blia blib bou blf" | sed 's/bl\(ia\|f\)//g'
あなたがしたいことをします。
ご存知のように、他のすべてが失敗した場合は、マニュアルをお読みください:-)。
GNU sedユーザーマニュアル、セクション3.3正規表現構文の概要:
`REGEXP1 \ | REGEXP2 '
REGEXP1またはREGEXP2のいずれかに一致します。
バックスラッシュに注意してください...
残念ながら、正規表現の構文は実際には標準化されていません...「特殊文字」が\を必要とするものとそうでないものとで異なる多くのバリアントがあります。いくつかは、設定可能であるか、スイッチに依存しています(GNUのようにgrep
、3つの異なる正規表現方言を切り替えることができます)。
特にこの回答は、GNU sed向けです。sed
BSDで使用されるものなど、動作が異なる他のバリアントがあります。
sed
サポート交代が、唯一の「拡張」正規表現構文(とない-E
:パイプや括弧のどちらかにはバックスラッシュを意味しない- )echo "blia blib bou blf" | sed -E 's/bl(ia|f)//g'