スクロールせずにgrep
コマンドの-i
スイッチの使用方法を知りたいとします。そのコマンドだけの仕様が必要です。または、少なくとも最初にそれが表示される画面を参照してください。どうやって?一般的に言うと、grep -i
だけではありません。
この簡単な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
}
端末で次のコマンドを入力します。
man grep
次に、スラッシュ文字を入力し、 /、および-i
のような検索を記述し、その後に Enter。これにより、検索文字列が最初に現れる位置にカーソルが配置されます。押す n カーソルを次のオカレンスに移動します。押す Shift+n カーソルを前のオカレンスに移動します。
最も単純なアプローチは、 / @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
アプローチに似ています。
または、このサイトに検索を行わせることができます:
http://explainshell.com/explain?cmd=grep+-i
ターミナルの使用からブラウザに少し切り替える必要がありますが、 その周辺 もあります。
man
内で検索関数を使用し、"s"
を事前に入力し、探しているキーを入力して(場合は-i)、introを押します。
私が知っている最も効率的な方法は、manページで-i
を検索することです(このサイトはコードのレンダリングに失敗しているようです。つまり、<space><space><space>-i
です)。これは3つのスペース(必要なスペースが多い/少ない)の後に、探しているフラグが続きます。私の経験ではほとんど常に機能しますが、機能しない場合は、いくつかのバリエーションに変更できます。
フラグの実際のドキュメントは通常インデントされているため、機能します。通常、フラグの前にはスペースが1つしかないため、他のセクションでフラグに関する他の言及を見つけることは避けられます。
man
ページで特定のオプションを見つけるための私のお気に入りのアプローチは、\s{2,}-option
のような正規表現を使用することです。手元の質問については、man grep
を実行してから正規表現を入力できます。
/\s{3,}-i
または
/ {3,}-i
^------------- space here
これは、3つ以上のスペースが続く場合にのみ-i
に一致します。
Perlとその「段落モード」を使用して、関連する段落のみを抽出できます。
man grep | Perl -00 -ne 'print if / -i/'
すべての答えは問題ないかもしれませんが、すべてではなく、ドキュメントの一部だけに焦点を合わせていると思います。たとえば、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 情報ページのほとんどのセクションを経由します。
ハイフンで始まるパターンのgrep
をman <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.
less
はデフォルトでman
のページャーとして使用されるため、LESS
環境変数を使用して、less
が開いたときに検索するパターンを渡すことができます。これは、例えばman ls
を入力してから、オプション--all
または-a
を検索します / 次にパターンを入力します--all
または-a
。
これらはすべて次の方法で実行できます。
LESS='+/--all' man ls
または
LESS='+/-a' man ls
/
の後に検索するものを入力します。
おそらく、これは短いオプション(例:--all
)と比較して長いオプション(例:-a
)で最適に機能します。