我不确定我的系统是否发生了变化,但我发现通过grep命令过滤Unix手册页不起作用。你知道怎么回事吗?
例如,考虑从以下代码编译的jq手册页。
.
.IP "\(bu" 4
\fB\-\-slurp\fR/\fB\-s\fR:
.
.IP
Instead of running the filter for each JSON object in the input, read the entire input stream into a large array and run the filter just once\.
.如果我想快速查找--slurp交换机,那么我通常通过grep过滤jq手册页面,如下面的终端会话所示。
$ man jq | grep -- --slurp
$注意什么都没有返回。奇怪的是,预期的结果如下所示。
$ man jq | grep -- --slurp
• --slurp/-s:这是预期的,因为如果我实际运行man jq命令并使用/搜索击键,然后搜索--slurp,那么这就有效了。
# ...
• --slurp/-s:
Instead of running the filter for each JSON object in the input, read the entire input stream into a large array and run the filter just once.我猜特殊人物有问题,但我不确定。我尝试通过cat命令将手册页放入其中,但这也不起作用。我还试着删除所有特殊字符--参见如何删除Linux文本中的所有特殊字符-but,它也不起作用。
$ man jq | cat | grep -- --slurp
$
$ man jq | sed 如果这与此相关,请参阅以下有关我的系统的详细信息。$ neofetch --off
OS: macOS 13.0.1 22A400 x86_64
Host: MacBookPro16,1
Kernel: 22.1.0
Uptime: 6 days, 1 hour, 3 mins
Packages: 145 (brew)
Shell: bash 3.2.57
Resolution: 1792x1120@2x
DE: Aqua
WM: Quartz Compositor
WM Theme: Blue (Light)
Terminal: iTerm2
Terminal Font: Monaco 12
CPU: Intel i7-9750H (12) @ 2.60GHz
GPU: Intel UHD Graphics 630, AMD Radeon Pro 5300M
Memory: 10425MiB / 16384MiBs/[^[:print:]\t]//g' | grep -- --slurp
$如果这与此相关,请参阅以下有关我的系统的详细信息。
A15
发布于 2022-11-17 02:32:36
我在我的Mac笔记本上看到了和你一样的东西。我使用man -P cat将寻呼机设置为cat,而不是设置PAGER或MANPAGER环境变量。当我翻阅man的手册页时,我发现了这个接近尾声的地方:
To get a plain text version of a man page, without backspaces and underscores, try
# man foo | col -b > foo.mantxt因此,我尝试了man jq | col -b | grep slurp,并得到了其中包含slurp的行,包括--slurp参数行。
我认为最好的线索是手册页中的短语'without背景空间和下划线。当然,如果我允许在slurp的每个字母之间加上两个字符,那么我就可以看到我期望的行:
man -P cat jq | grep s..l..u..r..p使用od -a检查--slurp中的一行给了我以下内容:
0000420 sp U s e sp - bs - - bs - s bs s l bs
0000440 l u bs u r bs r p bs p f bs f i bs i
0000460 l bs l e bs e sp i n s t e a d . nl这是一行的一部分,上面写着渲染器Use --slurpfile instead.显然使用了退格,并再次打印字母来表示字符串--slurpfile的粗体打印。退格和额外的字母是击败您的简单grep命令的原因。(我也是)
因此,在col -b允许您以所需的方式搜索输出之前,手册页看起来就像管道一样通过grep。
https://unix.stackexchange.com/questions/725210
复制相似问题