【问题标题】:shell command: need help about a regex matchshell 命令:需要有关正则表达式匹配的帮助
【发布时间】:2010-08-26 03:27:00
【问题描述】:

我有一句话我想写一个shell命令从文本中grep它: 这句话是:

self.timeout=2.0

但是,因为这是文件中代码的一部分。 所以这句话也可以是

self.timeout = 2.0

self.timeout =2.0

self.timeout = 8.0

即:“=”之外可能有空格,self.timeout的值可能不同。

所以任何人都可以帮助我在 shell 命令中使用正则表达式。 反正我知道shell:

grep "self.timeout*="

有效。 但我认为它在 shell 命令中不是一个好的正则表达式。

非常感谢!

【问题讨论】:

    标签: regex shell grep


    【解决方案1】:

    我愿意:

    grep -E 'self\.timeout[ \t]*=[ \t]*[0-9.]+'
    

    注意:

          |      |          |  |           
      use egrep  |          | zero or more
                 |    whitespace
                 |
      make sure we're matching
         a dot instead of
          "any character"     
    

    【讨论】:

    • slebetman,非常感谢!是的,这个正则表达式有效。你的正则表达式比我的正式得多!谢谢!
    • slebetman,非常感谢您的详细说明。它让我更好地理解你的正则表达式。我发现stackoverflow真的是一个很好的网站!
    • +1 表示垂直线。努力工作应该永远得到回报;-)
    【解决方案2】:

    使用grep -E aka egrep 可以使用正则表达式,* 运算符将匹配前面的 0 个或多个字符:

    egrep 'self\.timeout *='
    

    或使用[[:space:]] 匹配所有空白字符:

    egrep 'self\.timeout[[:space:]]*='
    

    【讨论】:

    • 约翰,非常感谢您的快速回答。 * 运算符将匹配 0 个或多个前面的字符。是的,其实这就是我想要的答案!我记得*可以解决问题,但我记不太清楚了。非常感谢!非常感谢您的第二种方法!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    • 2012-11-30
    相关资源
    最近更新 更多