1

拡張正規表現を有効にするための sed の-Eフラグを覚えているようですが、今日のマニュアルページを見ると、それがないことがわかりますが、

echo development.properties | sed -E 's/(development.|staging.|qa.|production.)//'

プロパティ

echo development.properties | sed 's/(development.|staging.|qa.|production.)//'

開発.プロパティ

echo development.properties | sed -r 's/(development.|staging.|qa.|production.)//'

プロパティ

したがって、 -E何かをしているように見えますが、さらに、それが-rのエイリアスになったと思います。少なくともそれが-Eの目的であると考えていました(拡張正規表現)。いつの間にか変わった?下位互換性のためにまだサポートされているように見えますか、それともサポートされていませんか?

また、sed の拡張正規表現は、括弧内のパイプ文字のような範囲とは何の関係もないように思えますが、これらのフラグ ( -E-r )がないと置換が機能しないのはなぜですか?

4

1 に答える 1

5
  1. -E-rあなたのsedバージョンのエイリアスです。すなわちextended regex support
  2. extended regexサポートなしでは、正規表現のグループ化でsquare bracketsはなく一致します。literal parentheses
于 2013-10-17T19:45:54.633 に答える