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?

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”.


Co z punktem (2)?
Jim

Czy edycja pomaga?
zadzwonić

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.