grep带有连字符选项的命令的手册页


Answers:


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只希望相关说明-i,以手册页标志。
2014年

3
@AvinashRaj不,它将允许您循环浏览的每次出现-i。这正是OP想要的。
terdon 2014年

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行,只是一招,让接下来的几行,类似阿维纳什的 sed做法。


3

您可以在中使用搜索功能man,只需按"s",输入您要查找的键(在您的情况下为-i),然后按介绍。


我键入man grep之后,在按s之后,我看到日志文件:之后,我键入-i和ENTER,但是看不到描述,或者有我不知道的东西
Mohammad Reza Rezwani 2014年


2

我知道的最有效的方法是在手册页中搜索 -i(该站点似乎无法呈现我的代码。我的意思是<space><space><space>-i)。那是3个空格(您可能需要更多/更少的空格),后跟要查找的标志。根据我的经验,它几乎总是可行的,在不起作用的情况下,您可以更改它的某些变体。

之所以起作用,是因为标记的实际文档通常是缩进的。避免在其他部分中找到该标志的其他提及,因为在它们前面通常只有一个空格。


1

通过所有答案都可以,但是我认为您只关注一部分文档,而不是全部。例如,要查找-igrep文档的开关:

info grep Invoking Command-line\ Options Matching\ Control

我将找到有关“ grep”的所有信息,以及如何为“匹配控件”“调用”特定的“命令行选项”。遗憾的是它并没有去比这更深刻,但它有-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因为它太普遍了,但是在任何情况下都可以将输出处理为信息)

在这种情况下,您将同时拥有信息页面的名称和确切的部分。啊,差点忘了,您也可以按照tab自己的方式浏览信息页面的大部分内容。


1

您可以使用Perl及其“段落模式”仅提取相关段落:

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

1

man页面中找到给定选项的最喜欢的方法是使用regex这样的正则表达式\s{2,}-option。对于当前的问题,您可以执行man grep然后键入正则表达式:

/\s{3,}-i

要么

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

-i仅当后面有三个或更多空格时,此匹配。


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.

资源

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.