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


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.