GNU grep의 -X 옵션의 실제 목적은 무엇이며 왜 문서화되지 않았습니까?


58

이 질문 을 읽음으로써 GNU 에 인수 grep가 필요한 -X옵션 이 있음을 발견했습니다 . 이상하게도 매뉴얼 페이지 나 정보 페이지에는 언급되어 있지 않습니다.

소스 코드 를 보면 --help출력 중간에 주석 있습니다 .

/* -X is deliberately undocumented.  */

더 찾고, 그것이 나타납니다 -X matcher옵션은 정규 표현식에 사용되는 엔진을 설정 , matcher중 하나를 grep , egrep, fgrep, awk, gawk, posixawkperl(버전 2.25 현재).

이러한 값 중 일부는 엄격하게 기존의 옵션과 동일 (즉이다 grep -G, grep -E, grep -Fgrep -P). 반면에 세 가지 awk변형에는 해당 옵션이 없습니다.

누군가이 옵션의 실제 목적이 무엇인지, 특히 awk정규 표현식 엔진 중 하나를 알고 있습니까? 누군가 의도적으로 문서화되지 않은 이유를 말해 줄 수 있습니까?


6
흥미로운 발견! 문서화되지 않은 채로 두는 것이 목적에 따라 사전 버전없이 자유롭게 제거 할 수 있도록하는 것입니다. GNU 문서화되지 않은 옵션의 또 다른 예는 -EBSD sed와의 호환성을 제공하는 GNU sed입니다. ( -EPOSIX가 공식적으로 채택하고 그렇지 않은 경우 제거하면 문서화 될 것으로 예상 됩니다.)
John1024

3
필자는 @ John1024에 동의하지만, 2005 년 2 월 7 일 -X에 고의적으로 문서화되지 않은 문서를 작성한 스테판 카살 (Stepan Kasal)은 확실하게 답변 할 수있는 유일한 사람입니다 . (그의 이메일 주소는 변경 로그에 표시됩니다.)
와일드 카드

3
나는 이것을 git history를 통해 추적하려고 시도했지만 grep의 첫 번째 git commit 전에 추가 된 것으로 판명되었습니다 (06b9f7e683e7650804cadd9a4c5cf6bff6c89625 (화 11 11 월 3 21:38:52 1998)). 아마도 그들은 이전 VCS를 git으로 가져 왔을 것입니다.
derobert


3
...하지만 oldlinux.org/Linux.old/distributions/TAMU/TAMU-1.0D/src/tar/ 에서 찾은 1.6은 아닙니다 ... (참고 : 해당 코드의 진위를 확인하기 위해 노력하지 않았습니다) 1.6 (1992) ~ 2.0 (1993) 사이의 날짜로 나타남
derobert

답변:


67

그 목적은 GNU grep에서 구현 된 다양한 매처 , 특히 다른 용도로는 사용할 수없는 AWK 매처, 특히 테스트 목적으로 액세스 할 수 있도록하는 것입니다 ( 및 매처 추가에 대해 설명하는 버그 16481 참조 ).gawkposixawk

그러나 현재 버그가 있습니다. 이것이 문서화되지 않은 것으로 문서화 된 이유입니다 .

Charles Levert는 2005 년 1 월 27 일 04:06:04 PM -0500에 다음과 같이 썼습니다.
> '-X'옵션, 특히 "awk"매처와 함께 사용하는 경우
( "-X awk")는 문서화되어 있지 않습니다.

문서화하지 않은 상태로 두십시오.

-X awk 외에 새로운 기능을 제공하지 않습니다.

그리고 awk 정규 표현식의 구현은 완벽하지 않습니다.

새로운 GNU 정규 표현식은 AWK 스타일 구문을 설정하는 수단을 의미합니다. 그러나 gawk는 직접 사용하지 않습니다. 먼저 정규 표현식을 구문 분석합니다.

특히 awk 정규식은 이스케이프 시퀀스 \ NNN을 허용합니다. 여기서 NNN은 8 진수 값입니다. / \ 040 / 수학 공간. grep -X awk는 이것을 지원하지 않는 것 같습니다.

regex.c가 이러한 이스케이프 시퀀스를 지원하지 않을까 걱정됩니다.

이 기능을 문서화 (및 지원)하기로 결정하기 전에 정규식이 awk 정규식과 완전히 호환되는지 확인해야합니다.

나는 그만한 가치가 없다고 생각합니다.

스테판

후속가 추가 될 주석을 요청하고,에 좀 더 배경 제공 -X옵션 :

내 자신의 성향은 -X를 완전히 제거하는 것입니다. 필자는 원래 작성자가 주로 테스트 목적으로 추가했다고 생각합니다. 계속 머 무르려면 최소한 이와 같은 주석을 추가하십시오.

/* -X is undocumented on purpose. */

해결 된 문제에 대한 향후 논의를 피하기 위해.

아놀드

이는 스테판은 곧 그 후했다 .


3
좋은 고고학 작품, 스티븐 감사합니다.
xhienne

2
감사 :-). 불행히도 트레일은 grep 2.0에서 멈 춥니 다. -XDFA 재 작성의 부작용으로을 도입 한 버전이라는 인상을 받았지만 변경 사항은 세부 정보가 부족합니다.
Stephen Kitt

7
"해결 된 문제에 대한 향후 논의를 피하기 위해." 어떻게 된거 지? ;)
Brock Adams

1
"-X는 버그이기 때문에 문서화되지 않았습니다"가 더 나은 선택이 아니겠습니까?
JAB
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.