Czytając to pytanie , odkryłem, że GNU grep
ma -X
opcję, która oczekuje argumentu. O dziwo nie wspomniano o tym ani na stronie podręcznika ani na stronie informacyjnej.
Patrząc na kod źródłowy, ten komentarz znajduje się na środku --help
wyniku :
/* -X is deliberately undocumented. */
Patrząc dalej, wydaje się, że -X matcher
opcja ustawia silnik używany do regexp , matcher
będąc jedną z grep
, egrep
, fgrep
, awk
, gawk
, posixawk
oraz perl
(od wersji 2.25).
Niektóre z tych wartości są całkowicie identyczne z istniejącymi opcjami (mianowicie grep -G
, grep -E
, grep -F
i grep -P
). Z drugiej strony trzy awk
warianty nie mają odpowiednich opcji.
Czy ktoś wie, jaki jest rzeczywisty cel tej opcji, zwłaszcza w przypadku jednego z awk
silników regexp? Czy ktoś może mi powiedzieć, dlaczego celowo nie jest to udokumentowane?
-E
GNU sed, który zapewnia zgodność z BSD sed. (Spodziewam-E
się, że zostanie to udokumentowane, jeśli POSIX formalnie je przyjmie i usunie, jeśli nie zrobi tego.)-X
to celowo nieudokumentowane. (Jego adres e-mail znajduje się w dzienniku zmian, jeśli chcesz go zapytać.)Odpowiedzi:
Jego celem jest zapewnienie dostępu do różnych programów dopasowujących zaimplementowanych w GNU
grep
w takiej lub innej formie, w szczególności programów dopasowujących AWK, które nie są dostępne w inny sposób, prawdopodobnie do celów testowych (patrz błąd 16481, który omawia dodawaniegawk
iposixawk
dopasowywania).Jednak obecnie jest on wadliwy, dlatego jest udokumentowany jako nieudokumentowany :
Follow-up poproszony o komentarz do dodania i pod warunkiem, nieco więcej tła na
-X
opcji:co Stepan zrobił wkrótce potem .
źródło
-X
, prawdopodobnie jako efekt uboczny przepisywania DFA, ale dziennik zmian nie zawiera szczegółów.