cat sed_data.txt | sed 's/\b[0-9]\{3\}\b/NUMBER/g'
私が見るには〜しなければならない正規表現を設定するには、文字をエスケープしてください。この場合、複数回解釈するには中括弧をエスケープする必要があります。
なぜ?エスケープしない限り、すべてが正規表現の文字になると思いました。それは逆です。
ベストアンサー1
sed
使うからです。POSIX BRE(Essential正規表現)、Perlや友達に慣れているERE(拡張正規表現)ではありません。
sed(1)
マニュアルページから:
REGULAR EXPRESSIONS
POSIX.2 BREs should be supported, but they aren't completely because of
performance problems. The \n sequence in a regular expression matches
the newline character, and similarly for \a, \t, and other sequences.
関連する引用は上記のリンクから来ます:
デフォルトの正規表現またはBREスタイルは、既存のUNIX grepコマンドで使用されているものと同様のスタイルを標準化します。これは今日でもまだ使用されている正規表現の最も古いスタイルです。このスタイルをユニークにすることは、ほとんどのメタ文字にスタイルを与えるためにバックスラッシュが必要であるということです。 POSIX EREを含む他のほとんどのスタイルは、バックスラッシュを使用してメタ文字の意味を抑制します。
で文字通り引用Craig Sondersでコメント:
少なくともGNU sedでは、-rまたは--regexp-extendedコマンドラインオプションを使用して拡張正規表現を使用するようにsedに指示できます。これは、過度のエスケープでsedスクリプトを見苦しくするのを防ぐために便利です。