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


10

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

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

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

余談ですが、BREと同じまたはERE でのperlの\s+使用のように空白に一致させること。[[:space:]][:space:]]*[[:space:]]+
jrm 2016

回答:


10

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

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

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


ポイント(2)はどうですか?
ジム

編集は役に立ちますか?
2014

1

ポイント2に関してgnu sedBRE、デフォルトでGNU を使用します。POSIXを使用BREするには、次を指定する必要があります--posix

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.