Чому sed за умовчанням не використовує розширений режим регулярного вираження?


10

Я використовую sed. Я використовував регулярний вираз, наскільки я міг бачити, але sed нічого не робив. Виявляється, я використовував \s+який sed не може зрозуміти, і коли я перейшов на [ ]+нього, працював.

Отже, підсумовуючи, я зробив регулярний вираз, який для його роботи повинен був уникнути майже всього і видалити \sпробіл. Здається, що існує режим, щоб уникнути всього цього. -rТому я хотів запитати:

  1. Чому -rдля sed не є режим за замовчуванням? Чому мені довелося піти на стільки неприємностей, щоб уникнути всього?
  2. manкаже, що є можливість --posixі що "POSIX.2 BREs повинні підтримуватися" На що це стосується? Режим NFA / DFA?

Як сторону, щоб збігати пробіл, як \s+використання Perl [[:space:]][:space:]]*у BRE та той самий або [[:space:]]+в ERE.
jrm

Відповіді:


10

Re 1) Відповідь така ж, як і для будь-якого іншого інструменту, який вдосконалювався протягом десятиліть. :)

Ви не хочете ламати існуючі сценарії, змінюючи поведінку за замовчуванням.

Re 2) Це не має нічого спільного з відповідним двигуном; це лише питання, який набір регулярних виразів підтримується. POSIX BRE означає "основний регулярний вираз".


Що з пунктом (2)?
Джим

Чи допомагає редагування?
тинк

1

Щодо пункту 2: за замовчуванням gnu sedвикористовує GNU BRE. Для використання POSIX BREслід вказати--posix

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.