正規表現の構文には多くのバリエーションがあります。正規表現を備えたUNIXの世界で最初のツールには、正規表現のすべての機能がありませんでした。文字セット([…]および.)、繰り返し(*)および行アンカー(^および$)のみがありました。基本的な正規表現には、これらの演算子しかありません。Sedは昔ながらのツールであり、基本的な正規表現を使用しています。
多くのsed実装には、完全な正規表現マッチングのための拡張機能があります。文字があるので|、それ自体を意味し、あなたが使用する必要が\|交代のために、同様に\(して\)グループ化するため。POSIX標準は\|、基本的な正規表現でサポートされることを義務付けておらず、一部のシステム(OpenBSDなど)ではサポートされていないことに注意してください。
sedの一部のバージョンでは、に切り替えるオプション持っている拡張正規表現、(…)グループ化するために、使用された|交替のために。GNU sed(つまり、LinuxまたはCygwin)またはBusyboxでは、-rオプションを渡します。上のFreeBSDやOSX、渡す-Eオプションを選択します。
sedに代替がない場合は、awk代わりに呼び出すことができます。これはPOSIXによって義務付けられていますが、このタスクについては少し冗長であり、後方参照をサポートしていません。
awk '{gsub(/foo|bar/, "narf")}' <fileName.old >fileName.new
ちなみに、GNUとBusyboxのみがsedをサポートしてファイルの置き換えをサポートしています。awkと他のバージョンのsedはサポートしていません。「カット」でファイルを変更できるかを参照してください。
Perlを使用している場合は、テキスト処理のワンライナーで、1つのツールですべての種類の方法を実行できるので便利です。sed、awk、およびその他の部分で簡単なことのほとんどは、Perlでそれほど難しくなく、単一の(複雑な場合)ツールを習得することで脱出できます。
perl -i -pe 's/foo|bar/narf/g' fileName