확장 정규식 모드를 기본적으로 사용하지 않는 이유는 무엇입니까?


10

sed를 사용하고 있습니다. 나는 내가 볼 수있는 한 올바른 정규 표현식을 사용하고 있었지만 sed는 아무것도하지 않았습니다. 내가 \s+sed가 이해할 수없는 것을 사용하고 있었고 그것을 전환했을 때 [ ]+효과가있었습니다.

요약하자면, 나는 그것이 작동하기 위해 거의 모든 것을 탈출 \s하고 공백을 제거 해야하는 정규 표현식을 만들었습니다 . 이 모든 것을 피할 수있는 모드가있는 것 같습니다. -r그래서 물어보고 싶었습니다.

  1. -rsed의 기본 모드 가 아닌 이유는 무엇 입니까? 왜 모든 것을 피하기 위해 많은 어려움을 겪어야합니까?
  2. man옵션이 --posix있고 "POSIX.2 BRE가 지원되어야한다" 고 말합니다. 이것은 무엇을 의미합니까? NFA / DFA 모드?

옆으로, BRE와 같은 또는 ERE 에서 펄의 \s+사용 과 같은 공백과 일치 합니다. [[:space:]][:space:]]*[[:space:]]+
jrm

답변:


10

Re 1) 답은 수십 년에 걸쳐 개선 된 다른 도구와 동일합니다. :)

기본 동작을 변경하여 기존 스크립트를 중단하고 싶지 않습니다.

Re 2) 그것은 일치하는 엔진과 관련이 없다. 어떤 정규 표현식이 지원되는지에 대한 질문 일뿐입니다. POSIX BRE는 "기본 정규식"을 의미합니다.


포인트 (2)는 어떻습니까?
Jim

편집이 도움이됩니까?
tink

1

요점 2 : gnu sedGNU BRE를 기본적으로 사용합니다. POSIX를 사용하려면 BRE다음을 지정해야합니다.--posix

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.