为什么在 grep ps 时将正则表达式中的单个字符括在方括号中会排除 grep 本身?

2023-11-29

如果我在我的 Linux 机器上执行以下 grep:

$ ps -ef | grep bash
root      2286     1  0 Jun06 ?        00:03:15 /bin/bash /etc/init.d/zxy100wd
wmiller   6436  6429  0 Jun06 pts/0    00:00:01 bash
wmiller  10707  6429  0 Jun07 pts/1    00:00:00 bash
wmiller  10795  6429  0 Jun07 pts/2    00:00:00 bash
wmiller  16220  6436  0 06:55 pts/0    00:00:00 grep --color=auto bash

请注意,最后一行报告 grep 本身,因为单词“bash”位于 grep 的参数中。

但是,如果我将 [] 放在“bash”中的任何字母周围,我会得到:

$ ps -ef | grep ba[s]h
root      2286     1  0 Jun06 ?        00:03:15 /bin/bash /etc/init.d/zxy100wd
wmiller   6436  6429  0 Jun06 pts/0    00:00:01 bash
wmiller  10707  6429  0 Jun07 pts/1    00:00:00 bash
wmiller  10795  6429  0 Jun07 pts/2    00:00:00 bash

这次没有关于 grep 的信息!

那么,为什么将搜索词中的字母(即正则表达式)括在括号中会阻止 grep 在这里报告自己呢?我认为 [s] 的意思是“由字符“s”组成的 [] 封闭集中的任何字符。


这是因为表达式ba[s]h (or [b]ash, 或...) 只是匹配bash, not ba[s]h (or [b]ash, 或者...)。

So the grep命令正在查找所有带有bash:

root      2286     1  0 Jun06 ?        00:03:15 /bin/bash /etc/init.d/zxy100wd
wmiller   6436  6429  0 Jun06 pts/0    00:00:01 bash
wmiller  10707  6429  0 Jun07 pts/1    00:00:00 bash
wmiller  10795  6429  0 Jun07 pts/2    00:00:00 bash

but

wmiller  16220  6436  0 06:55 pts/0    00:00:00 grep --color=auto ba[s]h

不匹配,因为它不完全匹配bash.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么在 grep ps 时将正则表达式中的单个字符括在方括号中会排除 grep 本身? 的相关文章

  • 正则表达式 - 避免表达式中出现字符串

    我正在尝试创建一个应该匹配以下情况的正则表达式 如果单词完全匹配 first second third 那么匹配应该失败 但如果它周围有任何字符 那么应该匹配该字符串 我还需要避免字符串中的某些字符集 如果这些字符是字符串的一部分 则匹配结
  • 使用 Beautifulsoup 和正则表达式提取 10-K Edgar 文件中的文本

    我想从大约 10000 个文件中自动提取 1A 风险因素 部分并将其写入 txt 文件 可以找到带有文件的示例 URLhere https www sec gov Archives edgar data 1800 0001047469190
  • 使用 Vala 和 GLib 的正则表达式

    有没有一个函数 比如http php net manual en function preg match all php http php net manual en function preg match all php 使用 GLibh
  • grep 查找 Unix 中的特殊字符

    我有一个日志文件 application log 其中可能包含以下多行普通和特殊字符字符串 Q 我想搜索包含这个特殊字符串的行号 grep Q application log 上述命令不返回任何结果 获取行号的正确语法是什么 Tell gr
  • 是否可以使用 Eclipse 的正则表达式搜索和替换转换为小写?

    我已经尝试过 L 但它似乎不是其语法的一部分 并且它的帮助没有提及任何可用的转换 我知道我可以并且知道如何从命令行执行此操作 但是 是否可以使用 Eclipse 的正则表达式搜索和替换进行大小写转换 您可以分两步完成 首先插入小写字母 那么
  • 修改排序比较器内的字符串

    我有以下代码 在排序比较器中 它在进行比较之前删除前缀字符串 print for sort a s STRING b s STRING foo a cmp foo b a 尽管比较和顺序是正确的 但前缀字符串已从输出中删除 以下保留前缀字符
  • 带变量的 AWK 负正则表达式

    我在 bash 脚本中使用 awk 来比较两个文件以获取不匹配的行 我需要将第二个文件的所有三个字段 作为一个模式 与第一个文件的所有行进行比较 第一个文件 chr1 9997 10330 HumanGM18558 peak 1 150 1
  • PHP正则表达式替换链接url

    我需要添加href 之前http 如果这http 不遵循href or src 以下代码部分有效 部分意味着它考虑 a href 只但不src a s i a href target blank gt 0 a str 预先感谢各位的回复 s
  • 替换字符串列表中的 \x00 的最佳方法?

    我有一个来自已解析 PE 文件的值列表 其中包括 x00每个部分末尾的空字节 我希望能够删除 x00字符串中的字节而不删除所有字节 x 文件中的 s 我试过做 replace and re sub 但并没有取得太大成功 使用Python 2
  • 需要正则表达式帮助

    我正在尝试替换两次或多次出现的 br like br br br 标签与两个一起 br br 具有以下模式 Pattern brTagPattern Pattern compile lt s br s s gt s 2 Pattern CA
  • Java String ReplaceAll 方法给出非法重复错误?

    我有一个字符串 当我尝试运行时replaceAll方法 我收到这个奇怪的错误 String str something op str str replaceAll o n it works fine str str replaceAll n
  • 如何仅计算数字长度正则表达式

    俄罗斯电话号码有11位数字 但我无法使用a 11 因为电话号码可以包含括号和破折号我的正则表达式 d 1 2 0 9 3 0 9 7 9 号码可以包含 1 到 2 个字符作为国家 地区代码然后 3 位带括号的数字或不作为电话运营商代码然后是
  • 使用 JavaScript 正则表达式分割字符串但保留分隔符?

    我收到如下输入 F12T213B1239T2F13T341F324 我必须按字母和后面的数字对其进行分组 所以理想的输出是 F12 T213 B1239 T2 F13 T341 F324 然后根据数字所带有的字母对数字进行一些处理 字母是固
  • 正则表达式替换,但仅限于两种模式之间

    好的 我有一个多行字符串 我正在尝试对其进行一些清理 每行可能是也可能不是一大段引用文本的一部分 例子 This line is not quoted This part of the line is not quoted but this
  • 使用 sed 替换复杂模式

    我想使用 sed 命令替换模式 要删除的图案如下所示 带有一个空格 var 0xaae8 x6A x6F x69 x6E x72 x65 x76 x65 x72 x73 x65 x73 x70 x6C x69 x74 x3E x74 x70
  • 除空字符串外的任何内容的正则表达式

    是否可以使用正则表达式来检测任何不是 空字符串 的内容 如下所示 string s1 string s2 string s3 string s4 etc 我知道我可以使用修剪等 但我想使用正则表达式 s 将匹配任何包含至少一个非空格字符的字
  • 从 Ansible 中的文件结果中提取文件名

    我正在尝试使用 Ansible 的结果find模块 它返回在特定文件夹中找到的文件列表 问题是 当我迭代结果时 我没有文件名 我只有它们的完整路径 包括名称 有没有一种简单的方法来使用find result item下面提供file nam
  • 在评论中查找不同风格的日期

    我还有一个问题要问preg match 我有一个表 其中评论的日期写在评论本身内 手动 现在我需要提取该日期并将其放置在不同的列中 我发现评论和日期的样式如下 id warning sent warning date 6109 2011 0
  • Ruby 字符串上的扫描和匹配有什么区别

    我是 Ruby 新手 并且一直使用String scan搜索某个数字第一次出现的位置 返回值在嵌套数组中有点奇怪 但我只是去了 0 0 为了我想要的价值观 我确信它有它的用途 只是我还没有使用它 我刚刚发现有一个String match方法
  • htaccess 重写以包含 #!

    呼叫所有 htaccess 专家 我需要你的帮助 我正在尝试强制重写以包含 在网址中 所以基本上我需要 http example com biography http example com biography 将被重写为http exam

随机推荐