web-dev-qa-db-ja.com

ハイフンでつながれたオプションのコマンドのmanページをgrep

スクロールせずにgrepコマンドの-iスイッチの使用方法を知りたいとします。そのコマンドだけの仕様が必要です。または、少なくとも最初にそれが表示される画面を参照してください。どうやって?一般的に言うと、grep -iだけではありません。

18

この簡単なsedコマンドを試してください。

$ man grep | sed -n '/-i, --ignore-case/,+2p'
    -i, --ignore-case
              Ignore  case  distinctions  in  both  the  PATTERN and the input
              files.  (-i is specified by POSIX.)

説明:

sed -n '/-i, --ignore-case/,+2p'

        |<-Search pattern->|

検索パターンを含む行と、検索パターン行のすぐ下にある2行を出力します。

OR

以下のように、検索パターンのフラグのみを指定できます。

avinash@avinash-Lenovo-IdeaPad-Z500:~$ man grep | sed -n '/ *i, -/,+3p'
       -i, --ignore-case
              Ignore  case  distinctions  in  both  the  PATTERN and the input
              files.  (-i is specified by POSIX.)

avinash@avinash-Lenovo-IdeaPad-Z500:~$ man grep | sed -n '/ *V, -/,+3p'
       -V, --version
              Print  the version number of grep to the standard output stream.
              This version number should be included in all bug  reports  (see
              below).
avinash@avinash-Lenovo-IdeaPad-Z500:~$ man grep | sed -n '/ *F, -/,+3p'
       -F, --fixed-strings
              Interpret PATTERN as a  list  of  fixed  strings,  separated  by
              newlines,  any  of  which is to be matched.  (-F is specified by
              POSIX.)
avinash@avinash-Lenovo-IdeaPad-Z500:~$ man grep | sed -n '/ *G, -/,+3p'
       -G, --basic-regexp
              Interpret PATTERN  as  a  basic  regular  expression  (BRE,  see
              below).  This is the default.

このスクリプトを.bashrc$HOME/.bashrc)に追加すると、すばやくアクセスできます。

mangrep(){
    USAGE="mangrep <application> <switch>"
    if [[ "$#" -ne "2" ]]
      then
          echo "Usage: $USAGE"
      else
          man "$1" | sed -n "/ *"$2", -/,+3p"
    fi
}
13
Avinash Raj

端末で次のコマンドを入力します。

man grep

次に、スラッシュ文字を入力し、 /、および-iのような検索を記述し、その後に Enter。これにより、検索文字列が最初に現れる位置にカーソルが配置されます。押す n カーソルを次のオカレンスに移動します。押す Shift+n カーソルを前のオカレンスに移動します。

22
girardengo

最も単純なアプローチは、 / @girardengoが示唆するように、grepの代わりにsedを使用することもできます。

$ man grep | grep -A 1 '^ *-i'
   -i, --ignore-case
          Ignore  case  distinctions  in  both  the  PATTERN and the input
          files.  (-i is specified by POSIX.)

-A Nは、「一致する行の後にN行を印刷します。次の数行を取得するトリックです。 Avinash'ssedアプローチに似ています。

8
terdon

または、このサイトに検索を行わせることができます:

http://explainshell.com/explain?cmd=grep+-i

ターミナルの使用からブラウザに少し切り替える必要がありますが、 その周辺 もあります。

3
Tom

man内で検索関数を使用し、"s"を事前に入力し、探しているキーを入力して(場合は-i)、introを押します。

3

私が知っている最も効率的な方法は、manページで-iを検索することです(このサイトはコードのレンダリングに失敗しているようです。つまり、<space><space><space>-iです)。これは3つのスペース(必要なスペースが多い/少ない)の後に、探しているフラグが続きます。私の経験ではほとんど常に機能しますが、機能しない場合は、いくつかのバリエーションに変更できます。

フラグの実際のドキュメントは通常インデントされているため、機能します。通常、フラグの前にはスペースが1つしかないため、他のセクションでフラグに関する他の言及を見つけることは避けられます。

2
Harold R. Eason

manページで特定のオプションを見つけるための私のお気に入りのアプローチは、\s{2,}-optionのような正規表現を使用することです。手元の質問については、man grepを実行してから正規表現を入力できます。

/\s{3,}-i

または

/ {3,}-i
 ^------------- space here

これは、3つ以上のスペースが続く場合にのみ-iに一致します。

1
Sergio

Perlとその「段落モード」を使用して、関連する段落のみを抽出できます。

man grep | Perl -00 -ne 'print if / -i/'
1
choroba

すべての答えは問題ないかもしれませんが、すべてではなく、ドキュメントの一部だけに焦点を合わせていると思います。たとえば、grepドキュメントの-iスイッチを見つけるには:

info grep Invoking Command-line\ Options Matching\ Control

「grep」、「matching control」の特定の「コマンドラインオプション」を「呼び出す」方法に関するすべての情報が見つかります。残念ながらそれ以上深くはなりませんが、最初の25行に-i-y--ignore-caseがあります。ダウン。

このソリューションはより柔軟であり、すべての情報ページを検索することもできます。

info --apropos=--ignore-case
"(coreutils)join invocation" -- --ignore-case <1>
"(coreutils)uniq invocation" -- --ignore-case <2>
"(coreutils)sort invocation" -- --ignore-case
"(gettext)msggrep Invocation" -- --ignore-case, ‘msggrep’ option
"(grep)Matching Control" -- --ignore-case

(あまりにも一般的だったので、--ignore-caseの代わりに-iを使用する必要がありましたが、どのような場合でもinfoに出力を処理するだけです)

この場合、情報ページの名前と正確なセクションの両方があります。ああ、ほとんど忘れてしまった tab 情報ページのほとんどのセクションを経由します。

1
Braiam

ハイフンで始まるパターンのgrepman <program>結果にしたい場合は、指定するパターンの前に--を使用します。 man findを使用した例:

man find | grep -- -type

オプションについて説明するセクション全体など、詳細情報が必要な場合は、sedを使用してみてください。

$ man find | sed -n '/-mindepth/,/^$/p'
   -mindepth levels
          Do  not apply any tests or actions at levels less than levels (a
          non-negative integer).  -mindepth  1  means  process  all  files
          except the command line arguments.

ソース

0
karel

lessはデフォルトでmanのページャーとして使用されるため、LESS環境変数を使用して、lessが開いたときに検索するパターンを渡すことができます。これは、例えばman lsを入力してから、オプション--allまたは-aを検索します / 次にパターンを入力します--allまたは-a

これらはすべて次の方法で実行できます。

LESS='+/--all' man ls

または

LESS='+/-a' man ls

/の後に検索するものを入力します。

おそらく、これは短いオプション(例:--all)と比較して長いオプション(例:-a)で最適に機能します。

0
heemayl