manページ内のハイフンを含むパターンを検索する方法は?


11

すべてのmanページ内のハイフンを含むパターンを検索するコマンドを見つけようとしています。

私はを見てman man、これらの3つのオプションを見つけました:

-K--global-apropos

すべてのマニュアルページでテキストを検索します。これはブルートフォース検索であり、時間がかかる可能性があります。可能であれば、セクションを指定して、検索する必要があるページの数を減らす必要があります。検索語は、単純な文字列(デフォルト)、または--regexオプションが使用されている場合は正規表現です。

-w--where--path--location

マニュアルページを実際に表示するのではなく、フォーマットされるソースnroffファイルの場所を印刷します。

-S list-s listt--sections=list

リストは、検索する注文固有の手動セクションのコロンまたはコンマ区切りのリストです。このオプションは$MANSECT環境変数を上書きします。(-sスペルはSystem Vとの互換性のためです。)

私はそれらを組み合わせて、でmark-modified-lines説明されているreadlineオプションであるパターンを検索しようとしましたman bash

$ man -s1 -Kw mark-modified-lines

しかし、ページは見つかりません。

No manual entry for mark-modified-lines

そして、コマンドはコードで終了します16
コマンドの構文が間違っている可能性があると思いましたが、このコマンドは次の単語を含むシステム上の5つのmanページを正しく検出するため、そうではありませんguitar

$ man -s1 -Kw guitar

  /usr/share/man/man1/ffmpeg-all.1.gz
  /usr/share/man/man1/ffserver-all.1.gz
  /usr/share/man/man1/ffplay-all.1.gz
  /usr/share/man/man1/ffmpeg-filters.1.gz
  /usr/share/man/man1/ffprobe-all.1.gz

多分単語のハイフンが問題を引き起こしたと思いました。でman bash--regex次のようなオプションが見つかりました。

--regex

のように、名前または説明のいずれかの部分が各ページ引数に一致するすべてのページを正規表現として表示しapropos(1)ます。通常、正規表現を検索するときに「最適な」ページを選択する合理的な方法がないため、このオプションはを意味し-aます。

このオプションを使用して、単語mark-modified-linesを正規表現に置き換えようとしましmark.modified.linesた。ハイフン自体は、.任意の文字と一致するメタ文字に置き換えられます。

$ man -s1 -Kw --regex 'mark.modified.lines'

それでもページは印刷されませんが、テキストがbashmanページに書かれていることは知っています。

.次のコマンドを使用しているため、正規表現のメタ文字は期待どおりに解析されているようです。

$ man -s1 -Kw --regex 'mark.mo'

プリント:

  /usr/share/man/man1/x11perfcomp.1.gz
  /usr/share/man/man1/xditview.1.gz

また、これら2つのマンページ(x11perfcompxditview)はどちらも正規表現に一致しmark.moます。より具体的にman x11perfcompは、次の行が含まれています。

Mark Moraes wrote the original scripts to compare servers.
^^^^^^^

そしてman xditview、この行が含まれています:

    Mark Moraes (University of Toronto)
    ^^^^^^^

ただし、man -s1 -Kw --regex 'mark.mo'bashのmanページは印刷しません。

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

この行が含まれているので、私はそれを期待しましたが

mark-modified-lines (Off)
^^^^^^^

manページ内でハイフンを含むパターンを検索することはできますか?

回答:


15

man -K(によって表示されるman)レンダリングされたフォームではなく、マニュアルページのソースコードを検索します。ハイフンはエンコードさ\-れているため、検索する必要があります。

man -s1 -Kw 'mark\-mo'

はい、これはかなりあいまいです。manページはの説明では、言及していること、オプションman-K

これは、レンダリングされたテキストではなく、マニュアルページのソースを検索するため、ソースファイル内のコメントなどによる誤検知が含まれる可能性があることに注意してください。レンダリングされたテキストの検索ははるかに遅くなります。

しかし、これを正しく使用するには、検索しているテキストのソース表現を知る必要があります。


1
あいまい?はい。また、それはバグです。
kubanczyk 2018年

@kubanczykは、仕様に一致していますが、はい、仕様にバグがあることに同意します;-)。
Stephen Kitt
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.