web-dev-qa-db-fra.com

Quel est le véritable objectif de GNU l'option -X de grep et pourquoi est-elle non documentée?

En lisant cette question , j'ai découvert que GNU grep a un -X option qui attend un argument. Étrangement, il n'est mentionné ni dans la page de manuel ni dans la page d'information.

En regardant le code source, il y a ce commentaire en plein milieu du --help sortie :

/* -X is deliberately undocumented.  */

En regardant plus loin, il semble que le -X matcher option définit le moteur utilisé pour l'expression rationnelle , matcher étant l'un desgrep, egrep, fgrep, awk, gawk, posixawk et Perl (à partir de la version 2.25).

Certaines de ces valeurs sont strictement identiques aux options existantes (à savoir grep -G, grep -E, grep -F et grep -P). En revanche, les trois variantes awk n'ont pas d'options correspondantes.

Quelqu'un sait-il quel est le but réel de cette option, en particulier avec l'un des moteurs d'expression rationnelle awk? Quelqu'un peut-il me dire pourquoi cela n'est pas délibérément documenté?

59
xhienne

Son but est de fournir un accès aux différents matchers implémentés dans GNU grep sous une forme ou une autre, en particulier les matchers AWK qui ne sont pas disponibles autrement, probablement à des fins de test ( voir bug 16481 qui traite de l'ajout des matchers gawk et posixawk).

Cependant, il est actuellement bogué, ce qui est la raison pour laquelle il est documenté comme étant non documenté :

Le jeu.27 janvier 2005 à 16 h 06 min 04 s -0500, Charles Levert a écrit:
> L'option '-X', et en particulier son utilisation avec le matcher "awk"
> ("-X awk") n'est pas documenté.

veuillez le laisser sans document.

Il ne fournit aucune nouvelle fonctionnalité à part -X awk.

Et la mise en œuvre des expressions rationnelles awk n'est pas parfaite, je pense.

La nouvelle GNU regex contient des moyens de définir la syntaxe du style AWK, oui. Pourtant, gawk ne l'utilise pas directement: il analyse d'abord l'expression régulière.

En particulier, les expressions rationnelles awk autorisent les séquences d'échappement\NNN, où NNN est une valeur octale. Donc/\ 040/matte l'espace. grep -X awk ne semble pas supporter cela.

J'ai peur que regex.c ne supporte pas ces séquences d'échappement.

Nous devons nous assurer que les expressions régulières sont entièrement compatibles avec les expressions régulières awk avant de décider de documenter (et donc de prendre en charge) cette fonctionnalité.

Je pense que ça ne vaut pas la peine.

Stepan

A suivi a demandé l'ajout du commentaire et a fourni un peu plus d'informations sur le -X option:

Ma propre tendance est de suggérer de supprimer complètement -X. Je soupçonne qu'il a été ajouté par l'auteur original principalement à des fins de test. Si cela doit rester, ajoutez au moins un commentaire comme celui-ci.

/* -X is undocumented on purpose. */

pour éviter toute discussion future sur un problème résolu.

Arnold

ce qui Stepan l'a fait peu de temps après .

68
Stephen Kitt