【问题标题】:egrep lines starting with r and ending with gegrep 以 r 开头并以 g 结尾的行
【发布时间】:2012-09-22 14:37:41
【问题描述】:

我需要使用 egrep 在 shell 中查找并显示以 r 开头并以 g 结尾的行。

我有

egrep -e "^r*g$" testfile.txt

但它没有给我任何结果,我做错了什么?

【问题讨论】:

  • 虽然你可以在双引号字符串的末尾放置一个$,但最好用单引号来写:'^r.*g$'
  • 您将正则表达式与 shell 使用的文件匹配模式(“globbing”)混淆了。在正则表达式中,. 匹配单个字符,.* 匹配零个或多个字符;在文件匹配模式中,它是?*,而. 并不特殊。文件匹配模式不太强大,但由于其选择文件的有限目的而往往更方便。

标签: regex shell unix grep


【解决方案1】:

添加. 应该可以工作

egrep -e "^r.*g$"

它基本上意味着:以 r 开头的所有内容,然后是零个或多个任何内容,然后以 g 结尾。

经过测试

r fsgdfs gfsdg
fooo bar
rfoo g
fdsqfdsq

rg

它返回

r fsgdfs gfsdg
rfoo g
rg

【讨论】:

    【解决方案2】:

    *r 匹配,而不是“介于两者之间的任何内容”。将其更新为.*,您应该会看到结果:

    egrep -e "^r.*g$" testfile.txt
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-28
      • 1970-01-01
      • 2020-07-17
      • 2023-04-07
      • 2018-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多