GNU grepの-Xオプションの実際の目的は何ですか?また、なぜ文書化されていないのですか?


58

この質問を読んで、GNUにgrep-X議論を期待するオプションがあることを発見しました。奇妙なことに、マニュアルページにも情報ページにも記載されていません。

ソースコードを見ると、--help出力の真ん中にそのコメントがあります

/* -X is deliberately undocumented.  */

さらに見ると、と思われる-X matcherオプションは、正規表現のために使用されるエンジンを設定しmatcherあることの1 grepegrepfgrepawkgawkposixawk及びperl(バージョン2.25のとおり)。

これらの値のいくつかは(つまり既存のオプションと厳密に同じでありgrep -Ggrep -Egrep -Fおよびgrep -P)。一方、3つのawkバリアントには対応するオプションがありません。

特にawk正規表現エンジンの1つで、誰かがこのオプションの実際の目的を知っていますか?意図的に文書化されていない理由を誰かに教えてもらえますか?


6
興味深い発見!文書化せずに残す目的は、将来のバージョンから通知なしに自由に削除できるようにすることだと思います。GNU非文書化オプションの別の例は、-EBSD sedとの互換性を提供するGNU sedです。(-EPOSIXが正式に採用する場合は文書化され、採用しない場合は削除される
予定

3
私は@ John1024に同意しますが、決定的に答えることができるのは2005年2月7日に-X意図的に文書化されていないStepan Kasalだけです。(彼に尋ねたい場合、彼のメールアドレスは変更ログにあります。)
ワイルドカード

3
これをgitの履歴で追跡しようとしましたが、grepの最初のgitコミットの前に追加されたことがわかりました(Tue Nov 3 21:38:52 1998から06b9f7e683e7650804cadd9a4c5cf6bff6c89625に存在していました)。おそらく、彼らは以前のVCSをgitにインポートしました。
デロバート


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のmatcher)を。

ただし、現在はバグがあるため、文書化されていないとして文書化されています。

2005年1月27日04:06:04 PM -0500のThuで、Charles Levertは次のように書きました。
> '-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で停止します。-XおそらくDFAの書き直しの副作用として導入されたバージョンの印象を受けますが、変更ログには詳細が不足しています。
スティーブンキット

7
「解決された問題の今後の議論を避けるため。」それはどうでしたか?;)
ブロックアダムス

1
「-Xはバグがあるので文書化されていません」がより良い選択ではありませんか?
JAB
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.