web-dev-qa-db-ja.com

デフォルトで拡張正規表現モードを使用してsedにならないのはなぜですか?

私はsedを使用しています。私の知る限りでは正しい正規表現を使用していましたが、sedは何もしませんでした。 sedが理解できない\s+を使用していたことが判明し、[ ]+に切り替えたときに機能しました。

要約すると、私は正規表現を作成しました。それを機能させるには、ほとんどすべてをエスケープし、空白の\sを削除する必要がありました。これらすべてを回避するモードがあるようです-rだから私は尋ねたかった:

  1. Sedのデフォルトモードが-rでないのはなぜですか?すべてを脱出するためになぜそんなに多くのトラブルに行かなければならなかったのですか?
  2. manは、オプション--posixがあり、「POSIX.2 BREをサポートする必要がある」と言っていますが、これは何を意味していますか? NFA/DFAモード?
10
Jim

Re 1)答えは、数十年にわたって改善された他のツールと同じです。 :)

デフォルトの動作を変更して既存のスクリプトを壊したくない場合。

Re 2)それはマッチングエンジンとは何の関係もありません。サポートされている正規表現のセットの問題です。 POSIX BREは「基本正規表現」を意味します。

10
tink

ポイント2について:gnu sedは、デフォルトでGNU BREを使用します。POSIXBREを使用するには、--posix

1
user2351281