AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 725210
Accepted
mbigras
mbigras
Asked: 2022-11-17 17:24:56 +0800 CST2022-11-17 17:24:56 +0800 CST 2022-11-17 17:24:56 +0800 CST

为什么我不能通过 grep 命令过滤手册页?[复制]

  • 772
这个问题在这里已经有了答案:
Grep:从手册页的标题中搜索单词时出现意外结果 (2 个答案)
2 天前关闭。

我不确定我的系统是否发生了某些变化,但我发现通过我的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来过滤jq手册页。grep

$ 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 文本中的所有特殊字符——但这也没有用。

$ man jq | cat | grep -- --slurp
$
$ man jq | sed $'s/[^[:print:]\t]//g' | grep -- --slurp
$

如果这是相关的,请查看有关我的系统的以下详细信息。

$ 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 / 16384MiB
grep
  • 1 1 个回答
  • 33 Views

1 个回答

  • Voted
  1. Best Answer
    Sotto Voce
    2022-11-17T18:32:36+08:002022-11-17T18:32:36+08:00

    我在我的 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参数台词。

    我认为最好的线索是手册页中的短语“没有退格和下划线”。果然,如果我允许每个字母之间有两个字符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.The renderer apparently uses backspace and printing the letter again to represent bold printing of the string --slurpfile。退格键和额外的字母使您的简单 grep 命令失败。(我也是)

    所以看起来col -b之前通过管道传递手册页grep会让你按照你想要的方式搜索输出。

    • 1

相关问题

  • 来自 `service | 的意外结果 grep`

  • 读取带有单词的文本文件及其出现次数和排序的打印输出

  • 命令 ls | grep 只显示目录(当它也应该显示文件时)

  • grep 什么时候计数,什么时候不计数

  • grep --line-buffered 直到 X 行?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve