如何 grep 查找手册页中的文本?

如何 grep 查找手册页中的文本?

我发现从命令行在手册页中 grep 查找文本(例如特定选项)很有用。

但是,grep在手册页上操作时,它无法按预期工作,如下所示,其中模式"-f"仅匹配"-"而模式"--file"不匹配任何内容 ( alias grep='grep --color=always'):

nlykkei-mbp:~ nlykkei$ alias grep
alias grep='grep --color=always'
nlykkei-mbp:~ nlykkei$ man grep | grep -e "-f"
          [-e pattern] [-f file] [--binary-files=value] [--color[=when]]
     -F, --fixed-strings
     -f file, --file=file
     -h, --no-filename
             --binary-file=without-match option.
     -L, --files-without-match
     -l, --files-with-matches
     --binary-files=value
     and the behaviour of the -f flag when used with an empty pattern file is
nlykkei-mbp:~ nlykkei$ man grep | grep -e "--file"
nlykkei-mbp:~ nlykkei$ echo "--file" | grep -e "--file"
--file
nlykkei-mbp:~ nlykkei$ ▒ 

相反,匹配管道文本echo可以按预期工作,那么这与手册页的“不可见”格式有关吗?手册页中的 grep 文本是否可靠?

注意:我知道man -kman -K,但这些并不能完全解决我想要实现的目标。

答案1

解决方案 1:为 man 使用特定的conf文件

一个配置文件.man.raw.conf

NROFF /usr/bin/groff -mandoc -Tlatin1 -P-u -P-b

使用的一个例子man

MyMAC:tmp e444$$ man  -C .man.raw.conf grep | grep -e --file
     -f file, --file=file
     -L, --files-without-match
     -l, --files-with-matches

解决方案 2:使用colcrt -

MyMAC:tmp e444$  man grep | colcrt -  | grep -e --file
     -f file, --file=file
     -L, --files-without-match
     -l, --files-with-matches

ps 1: 没有- colcrt 添加更多垃圾

ps 2:这个问题和答案在linux上没有意义,因为行为不一样。

答案2

你应该不是在手册页上使用 grep。手册页经过编码(不是简单的英语),内容与您要搜索的句子不匹配。

假设该程序man用于less显示手册页有一种方法可以借助 进行搜索less。继续阅读。

要确认您的手册页是通过less键入man grep(或其他命令)显示的,请按进入在查看手册页时,仅按 键H。如果小于,则标题帮助呈现的页面标题为:Less 命令总结。一旦你确认了这一点。您应该知道它less能够自行进行搜索(按qquit显示的帮助页面(如果需要),使用 键/。如果您按:

/-f

然后按 Enter,您将看到-f突出显示的内容(按n将移至下一个匹配项)。

或者,如果您只需要查看与字符串匹配的行,请执行以下操作:

&-f

如果您需要从命令行激活此类搜索,请执行以下操作:

$ LESS=+'/-f' man grep

相关内容