Я использую sed. Насколько я мог видеть, я использовал регулярное выражение, но sed ничего не делал. Оказывается, что я использовал, \s+
который sed не может понять, и когда я переключился на [ ]+
это работало.
Таким образом, чтобы подвести итог, я сделал регулярное выражение, которое, чтобы это работало, я должен был избежать почти всего и удалить \s
пробел. Кажется, есть способ избежать всего этого, -r
поэтому я хотел спросить:
- Почему не
-r
режим по умолчанию для sed? Почему я должен был пойти на столько неприятностей, чтобы избежать всего? man
говорит, что есть опция--posix
и что «POSIX.2 BRE должны поддерживаться» К чему это относится? Режим NFA / DFA?
\s+
использование perl[[:space:]][:space:]]*
в BRE и то же самое или[[:space:]]+
в ERE.Ответы:
По поводу 1) Ответ такой же, как и для любого другого инструмента, который был улучшен за десятилетия. :)
Вы не хотите нарушать существующие сценарии, изменяя поведение по умолчанию.
Re 2) Это не имеет ничего общего с соответствующим двигателем; вопрос только в том, какой набор регулярных выражений поддерживается. POSIX BRE означает «основное регулярное выражение».
источник
Относительно пункта 2:
gnu sed
использует GNUBRE
по умолчанию. Чтобы использовать POSIX,BRE
вы должны указать--posix
источник