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


18

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


回答:


14

この簡単な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行が印刷されます。

または

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

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
}

23

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

man grep

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


1
それはすべて見つけます-iさんをman greppage.But OPはに関連するのみ説明たい-imanページにフラグを。
アビナッシュラジ

3
@AvinashRajいいえ、それはあなたが出現するたびに循環することを可能にします-i。それはまさにOPが望んでいることです。
テルドン

9

最も簡単なアプローチは/@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の sedアプローチを。


3

内部manで検索機能を使用し、presだけを"s"探して、探しているキーを入力し(場合は-i)、イントロを押します。


私は私のプレスsが、その後私は、ログ・ファイルを参照してくださいことをした後、男のgrepを入力します。私は、-iと入力し、ENTERその後私は説明が表示されていないか、私は知りません気にいらがある
モハマド・レザ・Rezwaniが


2

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

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


1

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

info grep Invoking Command-line\ Options Matching\ Control

「grep」、「matching control」の特定の「コマンドラインオプション」を「呼び出す」方法に関するすべての情報が見つかります。悲しいことに、それはそれ以上深く行かないが、それは持っている-i-y--ignore-case初中25行、あなたはすべてのあなたの方法の下にスクロールする必要がないことの合理的な何かを。

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

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

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

man grep | perl -00 -ne 'print if / -i/'

1

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

/\s{3,}-i

または

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

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


0

通りlessのためのページャとしてデフォルトで使用されman、あなたが使用することができLESSたときに検索するパターン渡す環境変数をlessページが開きます。これは、例えばをやってと同じですman lsし、そのオプションを検索--allまたは-a入力して/、その後、パターンなどを入力します--all-a

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

LESS='+/--all' man ls

または

LESS='+/-a' man ls

検索したいものを入力してください/

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


0

ハイフンで始まるパターン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.

ソース

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.