マニュアルページに構造化コンテンツとしてアクセスする方法

マニュアルページに構造化コンテンツとしてアクセスする方法

マンページを参照するリソースを作成していますが、マンページにアクセスする方法を知っている人がいるかどうか疑問に思います。構造化データ?私の現在のアプローチはたくさん正規表現を使用すると退屈でエラーが発生しやすくなります。

私は* nixの専門家ではありませんが、マニュアルページは基本的にコマンドで解析できる特定の構文を含むテキストファイルであることが私の理解ですman。オプションやフラグのリストにアクセスする簡単な方法がある場合は、少し懐疑的です。しかし、たぶん私が知らない方法があるかもしれません。

答え1

あなたは方法を見ることができます魚の皮設立するマニュアルページの完成特にそれがどのように__fish_complete_man機能するか。より簡単なオプションは、groffHTMLをエクスポートしてから、多くのHTMLパーサーの1つを使用して必要なものを取得することを前提としています。

$ groff -T html -mdoc xpquery.1 | xpquery -p HTML '//p[b="xpquery"][2]' -
<p style="margin-left:17%;"><b>xpquery</b>
[<b>−E </b><i>encoding</i>]
[<b>−n </b><i>namespace</i>]
[<b>−p </b><i>method</i>]
[<b>−S </b><i>xpath-subquery</i>]
[<b>−t </b><i>timeout</i>] <i>xpath-query
file-or-url ..</i></p>
$ 

それはマニュアルページHTMLでレンダリングされた後に使用されるときに選択されるXパス要約セクションでフラグのリストを取得します。最近ではCSSセレクタを使用する方が人気があります。ただし、生成されたHTMLはあまり構造化されていません。

答え2

マンページは次のとおりですロープ書式設定されたテキストファイルは、残念ながら、現在書式設定された言語に解析される最も迷惑なファイルの1つです。システムで使用されているroffの実装に関するドキュメントを見ると、あなたが望むものを見つけることができます(ほとんどの場合、またはnroffいずれtroffか)。groffフォーマット自体は少し複雑ですが(ミニマリズムが良いソフトウェアデザインの典型であった時代に設計されました)、ほとんどのマニュアルページは構造がかなり一貫しているのでそれほど難しくありません。

それに加えて、いくつかの異なるオプションがあります。最初のステップは、ソフトウェアソースコードディストリビューションでマニュアルページのソースコードを見ることです。今日、ほとんどのソフトウェアはマンページを他の形式のmanプログラムによって分析されるroffソースコードにコンパイルし、ほとんどはroffマクロよりも分析が簡単です。もう1つの方法は、groffthrigの回答で提案されているように、マニュアルページを別の形式に変換するためのツール(含まれている)を調べることです。

答え3

確認する人間サーバーこれは、マニュアルページを解析し、それを簡単な方法でWebページにレンダリングする1999年のPerlスクリプトです。これには、 troff ソースコードを解釈するために必要なすべての Perl コードが含まれています。

答え4

ドキュメントエレベーター、特に重量挙げ選手troffと一部のtroffマクロセットをXMLに変換するスクリプト -文書化書

関連情報