Regex 使用Terminal man命令阅读手册页的章节

Regex 使用Terminal man命令阅读手册页的章节,regex,linux,bash,awk,gnome-terminal,Regex,Linux,Bash,Awk,Gnome Terminal,我只想阅读手册页面中我要查找的部分 例如,我可以使用 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)'
结果是:

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.

你应该考虑一下K—(-ANOR)< /P>的部分是什么意思? 例如,这个条目怎么样

   -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来做。

你应该考虑一下-k(-ANORE)< /P>的部分是什么意思? 例如,这个条目怎么样

   -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来实现这一点。

使用-k获取所有行(包括手册开头概述中的示例)对您来说重要吗?或者详细的参数描述对您来说足够了吗?有人提供了
man | sed'/-k/,/^$/!d'
但它对
-r
不起作用,因为有
-r
的偶然匹配,比如
--regex
。。。您可以通过指定下一个字符来排除它们,该字符将是空格或逗号,因此
man-man | sed'/-k[,]/,/^$/!d'
但显然,停在空行并不能完全满足您的需求:添加[python]标记不会使这成为python的问题。重写问题,使其与python无关,或者从问题中删除标记。是否需要使用-k获取所有行,包括手册页开头概述中的示例,或者详细参数描述是否足够?一些人提供了
man | sed'/-k/,/^$/!d'
但它对
-r
不起作用,因为有
-r
的偶然匹配,比如
--regex
。。。您可以通过指定下一个字符来排除它们,该字符将是空格或逗号,因此
man-man | sed'/-k[,]/,/^$/!d'
但显然,停在空行并不能完全满足您的需求:添加[python]标记不会使这成为python的问题。或者重写问题,使其与python有关,或者从问题中删除标记。打印所有行,以与正则表达式匹配的行开始,以与另一个正则表达式匹配的行结束,这是
awk
的常见任务,可能比编写python脚本容易。打印所有行,以与正则表达式匹配的行开始,以正则表达式结束匹配另一个正则表达式的行是
awk
的常见作业,可能比编写python脚本更容易。