すべてのマニュアルページで文字列を取得する方法

すべてのマニュアルページで文字列を取得する方法

「中括弧拡張」(大文字と小文字を無視)文字列を含むBashのマニュアルページのすべての行を表示するコマンドは何ですか?

man -wK . | grep "[Bb]race [Ee]xpansion"一連の「接続を切断できません」エラーが発生しようとしました。

man -s1 -Kw --regex 'brace expansion'その後、クエリを読み取り、コマンドを使用して検索を試みました。ハイフンを含むパターンをマニュアルページで検索するには?

私は戻った:

/usr/share/man/man1/bash.1.gz 

印刷ファイルを試してみましたcatが、奇妙なシンボルがすべて表示されました。

答え1

このコマンドを実行すると、man bash通常はシステムのデフォルトポケットベルで文書が開きます。less特定のパターンに一致する行に移動するには、を入力します/<pattern>。たとえば、マニュアルページに入った直後に、次のように入力します。

/brace expansion

その後、表示される最初の位置に自動的に移動する必要があります。そこからボタンを押すと、その後のnイベントに移動できます。

ファイル拡張子はまた、.gzファイルがgzipを使用して圧縮されたことを意味します。ファイルを直接読み取ることはできません。

答え2

検索結果(システムのマニュアルページソースファイル)は、各ページを読み取るためにローカルモードでmanに渡すことができます。

man -wK --regex 'Brace Expansion' | sort -u | xargs man -l -P cat | grep -inF 'Brace Expansion'

デフォルトでは、manコマンドの検索に使用される正規表現は大文字と小文字を区別しません。検索結果のリストがソートされ、すべての重複項目が削除されます。その後、manに返された値を使用しますxargscatページャを使用すると、処理された各マニュアルページを標準出力に印刷できます。この時点で、データはgrepが機能できるプレーンテキストストリームです。

オプションは、システムのMANPATHを解析するのではなく、ファイルを直接解析してローカルモードを有効にするために使用されます-lman

ポケットベルをに設定する-P catオプションです。これは、処理されたマニュアルページがを使用して表示されることを意味します。mancatcat

大文字と小文字を区別しない検索オプションです-igrepこの-nオプションは行番号を印刷します(便宜上追加されました)。この-Fオプションは、パターンが固定文字列であることを指定します。

答え3

元の質問に応じて、次のコマンドは「中括弧の拡張」を含むbashのマニュアルページのすべての行を表示します。

for page in $( man -k bash | awk '{print $1}' ); do
    zgrep -i -n  'brace expansion' $(man -w $page) /dev/null
done

まず、説明から「bash」に対応するマニュアルページのリストを取得し、検索されたリストを繰り返して、一致する「中括弧拡張」文字列を検索します。 zgrep(1) は自動的にファイルを解凍します;)

関連情報