Beim Lesen dieser Frage habe ich festgestellt, dass GNU grep
eine -X
Option hat, die ein Argument erwartet. Seltsamerweise wird es weder in der Manpage noch in der Infoseite erwähnt.
Wenn man sich den Quellcode ansieht, gibt es diesen Kommentar genau in der Mitte der --help
Ausgabe :
/* -X is deliberately undocumented. */
Suchen Sie weiter, scheint es , dass die -X matcher
Option , den Motor für den regulären Ausdruck verwendet setzt , matcher
ist eine der grep
, egrep
, fgrep
, awk
, gawk
, posixawk
und perl
(ab Version 2.25).
Einige dieser Werte sind streng identisch mit bestehenden Optionen (nämlich grep -G
, grep -E
, grep -F
und grep -P
). Andererseits haben die drei awk
Varianten keine entsprechenden Optionen.
Weiß jemand, was der eigentliche Zweck dieser Option ist, insbesondere bei einer der awk
regulären Ausdrücke? Kann mir jemand sagen, warum es absichtlich nicht dokumentiert ist?
-E
GNU sed, die Kompatibilität mit BSD sed bietet. (Ich erwarte-E
, dokumentiert zu werden, wenn POSIX es offiziell annimmt und entfernt, wenn es dies nicht tut.)-X
bewusst undokumentiert ist. (Seine E-Mail-Adresse steht im Changelog, wenn Sie ihn fragen möchten.)Antworten:
Sein Zweck ist es, den Zugriff auf die verschiedenen in GNU implementierten Matcher
grep
in der einen oder anderen Form zu ermöglichen, insbesondere auf AWK-Matcher, die sonst wahrscheinlich zu Testzwecken nicht verfügbar sind (siehe Fehler 16481, in dem das Hinzufügen der Matchergawk
und erörtert wirdposixawk
).Es ist jedoch derzeit fehlerhaft, was der Grund ist, warum es als undokumentiert dokumentiert ist :
In einem Follow-up wurde um das Hinzufügen des Kommentars gebeten, und die
-X
Option wurde etwas näher erläutert:was Stepan kurz danach tat .
quelle
-X
wahrscheinlich als Nebeneffekt des DFA-Rewrites eingeführt wurde, aber das Changelog enthält nur wenige Details.