GNU grep의 -X 옵션의 실제 목적은 무엇이며 왜 문서화되지 않았습니까? 을 읽음으로써 GNU 에 인수 grep가

이 질문 을 읽음으로써 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정규 표현식 엔진 중 하나를 알고 있습니까? 누군가 의도적으로 문서화되지 않은 이유를 말해 줄 수 있습니까?



답변

그 목적은 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. */

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

아놀드

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