이 BSD grep 결과가 GNU grep과 다른 이유는 무엇입니까?


13

내 컴퓨터가 macOS 10.12.3을 실행 중이고 시스템 설치 grep유틸리티를 버전 2.5.1-FreeBSD와 함께 사용하고 있습니다 .

다음은 다양한 정규식을 테스트 할 때 얻는 결과입니다.

스크린 샷

그러나 GNU grep (버전 2.25)을 사용하여 이것을 실행하면 다음과 같은 결과가 나타납니다.

스크린 샷

GNU의 grep은 나에게 옳고 BSD는 정확하지 않습니다. 왜 다른가요? 정규식에서 줄의 시작 부분을 따라야한다고 지정할 때 BSD의 grep이 "a"와 일치하는 이유를 이해하지 못합니다.


2
첫 번째 행동을 버그로보고하십시오.
Satō Katsura

1
당신은 그것이 echo 'bababa' | grep -E '^(a|b)'모두 빨간색 임을 알 수 있습니다. 와 같은 문제가 발생합니다 -o. 나는 추측 grep여러 일치하는 외모,하지만 두 번째 경기 이상을 위해, 그것은 (그래서 이전 시간 일치 무엇의 오른쪽에 무엇에 정규 표현식 적용 ananaREG_NOTBOL 플래그를 거치지 않고 귀하의 경우 두 번째에를). 참조echo banana | grep -Eo '^ban|^ana$'
스테판 Chazelas가에게

2
@JdeBP, 내 OS X에, grep같은 식별 자체 grep (BSD grep) 2.5.1-FreeBSD전용 "GNU 버전과의 호환성을 위해 제공 긴 옵션"을 언급하여 GNU 참조 매뉴얼 페이지와. 또한 GPL (또는 FSF)에 대한 저작권 고지 나 언급이 없습니다. GNU util의 역사가 있다면 말하기가 어렵습니다.
ilkkachu

우리는 이것이 오도 하는 방법을 보여주고 있습니다. (-: grep많은 사람들이 생각하고있는 Decade Moon의 답변에서 논의 된 것은 grep (GNU grep) 2.5.1-FreeBSD(버그 토론에서 볼 수 있듯이 ) 올바른 것으로 식별되고 , FSF 저작권 고지가 있으며, 가장 확실하게 GNU grep입니다. FreeBSD가 부르는 bsdgrep것은 OpenBSD입니다 FreeBSD 변종을 제외하고 옵션 이없는 grepBSD를 호출합니다 . 이것이 버그 토론에서 한 사람이 FreeBSD가 전환 하도록 제안한 것입니다 .grep--colorgrep (BSD grep) 2.5.1-FreeBSDgrep
JdeBP

답변:


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