Команда оболочки: нужна помощь о совпадении с регулярным выражением - PullRequest
2 голосов
/ 26 августа 2010

У меня есть предложение, которое я хочу написать команду оболочки, чтобы извлечь его из текста: Предложение:

self.timeout=2.0

Однако, так как это часть кода из файла. так что это предложение также может быть

self.timeout = 2.0

или

self.timeout =2.0

или

self.timeout = 8.0

то есть: кроме "=" могут быть пробелы, а значение self.timeout может отличаться.

Так что кто-нибудь может помочь дать мне регулярное выражение в команде оболочки. Во всяком случае, я знаю оболочку:

grep "self.timeout*="

работает. Но я думаю, что это не очень хорошее регулярное выражение в команде оболочки.

Большое спасибо!

Ответы [ 2 ]

4 голосов
/ 26 августа 2010

Я бы сделал:

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"     
2 голосов
/ 26 августа 2010

Используя grep -E aka egrep, вы можете использовать регулярное выражение, с которым оператор * будет соответствовать 0 или более предыдущему символу:

egrep 'self\.timeout *='

Или использовать [[:space:]] длясоответствовать всем пробельным символам:

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