Dlaczego sed nie używa domyślnie trybu rozszerzonego wyrażenia regularnego?

10

Używam sed. Używałem wyrażenia regularnego, które było prawidłowe, o ile mogłem zobaczyć, ale sed nic nie zrobił. Okazuje się, że korzystałem z \s+którego sed nie może zrozumieć, a kiedy przełączyłem się na [ ]+to, działało.

Podsumowując, stworzyłem regex, który by zadziałał, musiałem uciec prawie wszystko i usunąć \sspację. Wydaje się, że istnieje sposób na uniknięcie tych wszystkich, -rwięc chciałem zapytać:

  1. Dlaczego nie -rma domyślnego trybu dla sed? Dlaczego musiałem zadawać sobie tyle trudu, by uciec od wszystkiego?
  2. manmówi, że istnieje opcja --posixi że „Dokumenty BRE POSIX.2 powinny być obsługiwane” Co to dotyczy? Tryb NFA / DFA?
Jim
źródło
Na marginesie, aby dopasować białe znaki, takie jak \s+użycie perla [[:space:]][:space:]]*w BRE i tym samym lub [[:space:]]+w ERE.
jrm

Odpowiedzi:

10

Re 1) Odpowiedź jest taka sama, jak w przypadku każdego innego narzędzia, które było ulepszane przez dziesięciolecia. :)

Nie chcesz łamać istniejących skryptów, zmieniając domyślne zachowanie.

Re 2) To nie ma nic wspólnego z dopasowanym silnikiem; to tylko pytanie, który zestaw wyrażeń regularnych jest obsługiwany. POSIX BRE oznacza „podstawowe wyrażenie regularne”.

zadzwonić
źródło
Co z punktem (2)?
Jim
Czy edycja pomaga?
zadzwonić
1

Odnośnie do punktu 2: domyślnie gnu sedużywa GNU BRE. Aby użyć POSIX BRE, należy określić--posix

użytkownik2351281
źródło