shell命令:需要有关正则表达式匹配的帮助

时间:2010-08-26 03:27:01

标签: regex shell grep

我有一句话,我想写一个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命令中不是一个好的正则表达式。

非常感谢!

2 个答案:

答案 0 :(得分:4)

我会这样做:

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"     

答案 1 :(得分:2)

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

egrep 'self\.timeout *='

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

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