三个命令的管道

三个命令的管道

在手册中sudo我需要搜索-k所以我尝试了这个:

man sudo | grep '\-k'

但这会导致输出结果只写了一半:

sudo -h | -K | -k | -V
             Similar to the -k option, except that it removes the user's
 -k, --reset-timestamp

相反,我尝试打印整个手册,并使用以下内容为搜索短语着色:

man sudo | grep '\-k\|$'

但是由于手册页太长,我无法向上滚动到足以到达输出的开头(注意:我不想更改终端的配置文件设置中的 Scrollback 行)。

所以我需要使用moreless命令,才能按页显示输出,所以我尝试了:

man sudo | grep '\-k\|$' | less

但它当然不起作用,因为管道在第一个命令上运行了第二个命令。

知道如何重定向管道吗?

或者grep打印整个段落而不是一行?(行数基于终端的窗口大小)

答案1

man默认情况下已经用作less分页器来显示手册页内容。

现在less已经具有内置的搜索和突出显示功能,因此您不需要类似的外部工具grep

man sudo只需在 shell 中运行以打开手册页,然后输入/-k(按下/并输入您的搜索模式)。less现在将突出显示此正则表达式在文档中匹配的任何位置,并直接跳转到第一个匹配项。

n然后,您可以通过键入(按)导航到下一场比赛,或者通过键入(按+ )N导航到上一场比赛。NShiftN


更一般地说,如果您想grep在 中以彩色突出显示的方式查看 的输出less,则必须使用grep --color=always(始终发出颜色代码,即使不是输出到终端而是输出到管道)和less -R(解释颜色转义而不是打印控制字符):

man sudo | grep --color=always '\-k\|$' | less -R

答案2

使用和grep开关来捕捉周围的线条-A-B-C

man grep | grep '\-[ABC]' -A2

   -A NUM, --after-context=NUM
          Print NUM lines of trailing context after matching lines.  Places a line containing a group separator (described under --group-separator) between contiguous groups of matches.  With the -o or
          --only-matching option, this has no effect and a warning is given.

   -B NUM, --before-context=NUM
          Print NUM lines of leading context before matching lines.  Places a line containing a group separator (described under --group-separator) between contiguous groups of matches.  With the -o or
          --only-matching option, this has no effect and a warning is given.

   -C NUM, -NUM, --context=NUM
          Print  NUM  lines  of  output  context.   Places  a line containing a group separator (described under --group-separator) between contiguous groups of matches.  With the -o or --only-matching
          option, this has no effect and a warning is given.

就你的情况而言:

man sudo | grep '\-k' -A5 -B2

这当然并不完美,因为您不知道需要多少行,但它仍然可以帮助您找到所需内容。

答案3

也许most传呼机可以满足您的要求。试试

export PAGER=most
man sudo
/-k

相关内容