web-dev-qa-db-ja.com

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

この質問 を読んで、GNU grepには引数を期待する-Xオプションがあることを発見しました。不思議なことに、 manページにもinfoページにもありません。

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

/* -X is deliberately undocumented.  */

さらに見ると、-X matcherオプション 正規表現に使用されるエンジンを設定するmatcherのいずれかgrepegrepfgrepawkgawkposixawkおよびPerl(バージョン2.25以降)。

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

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

59
xhienne

その目的は、GNU grepで実装されたさまざまなマッチャー、特にテスト目的でおそらく他の方法では利用できないAWKマッチャーへのアクセスを提供することです( gawkおよびposixawkマッチャーの追加について説明している bug 16481 を参照してください)。

ただし、現在はバグが多いため、これが ドキュメント化されていないことがドキュメント化されている理由です

2005年1月27日木曜日の04:06:04 PM -0500に、チャールズレバートは次のように書いています。
>「-X」オプション、特に「awk」マッチャーでの使用
>( "-X awk")は文書化されていません。

文書化しないでください。

-X awk以外の新機能はありません。

そして、awk regexpsの実装は完璧ではないと思います。

新しいGNU正規表現は、AWKスタイルの構文を設定するいくつかの手段を備えていますが、gawkはそれを直接使用せず、最初に正規表現を解析します。

特に、awkの正規表現では、エスケープシーケンス\ NNNを使用できます。NNNは8進値です。/\ 040 /はスペースをつなぎます。 grep -X awkはこれをサポートしていないようです。

Regex.cはこれらのエスケープシーケンスをサポートしていないと思います。

この機能を文書化(およびサポート)することを決定する前に、正規表現がawk正規表現と完全に互換性があることを確認する必要があります。

困るほどの価値はないと思います。

ステパン

follow-up はコメントの追加を要求し、-Xオプションの背景をもう少し提供しました:

私自身の傾向は、-Xを完全に削除することを提案することです。私はそれが主にテストの目的で元の作者によって追加されたと思います。それがとどまるなら、少なくともこのようなコメントを追加してください。

/* -X is undocumented on purpose. */

解決された問題の今後の議論を避けるため。

アーノルド

これは その後すぐにステパンが行いました です。

68
Stephen Kitt