使用Terminal man命令从Manual Page中读取部分

时间:2016-11-07 13:21:37

标签: regex linux bash awk gnome-terminal

我想在手册页中只阅读我要查找的内容。

例如,只读-k手册页中的man部分我可以使用

man man | grep -E '(-k)'

结果:

man -k [apropos options] regexp ...
man -k printf
-k, --apropos
       which in turn overrides the $PAGER environment variable.  It is not used in conjunction with -f or -k.

结果很糟糕,因为不是我需要的所有部分。
所以目前我正在使用:

man man | grep -E '(-k|'')'

结果是所有文字,但标有-k红色。

我的问题是如何获得类似的输出:

man -k [apropos options] regexp ...
man -k printf
       Search the short descriptions and manual page names for the keyword printf as regular expression.   Print  out  any  matches.
       Equivalent to apropos printf.
-k, --apropos
          Equivalent to apropos.  Search the short manual page descriptions for keywords and display any  matches.   See  apropos(1)
          for details.

1 个答案:

答案 0 :(得分:0)

您应该考虑-k(-AnyOther)

部分的含义

例如,这个条目怎么样?:

   -P pager, --pager=pager
          Specify which output pager to use.  By default, man uses pager -s.  This option overrides the $MANPAGER environment variable, which in turn overrides the $PAGER environment  variable.   It
          is not used in conjunction with -f or -k.

它也以某种方式与-k相关。

根据您的示例,我想您要跳过此条目。 如果是这样,我建议使用两个正则表达式:

"^\s*-k" # for the case when -k is at the beginning
"man -k" # self explainable :) 

在找到的条目中,您应该打印下面的所有行,在第一个可打印字符之前的空格比您的匹配中的空格更多。

我不确定grep或sed是否适合这项工作。我个人会尝试使用python或awk。