Регулярные выражения GREP

Материал из darklurker wiki
Перейти к: навигация, поиск


-E                            //опция grep, включающая режим extended regexp.
-q                            //опция grep, благодаря ей grep вернёт код возврата (совпадение есть — вернёт 0, иначе — вернёт не ноль)
^...$                         //привязка к началу и концу строки
(...)                         //группа
(...){3}                      //группа должна повториться ровно три раза
(выражение1|выражение2|...)   //должно совпасть или выражение1 или выражение2 или ...
[...]                         //любой из перечисленных символов («набор»)
[0-5]                         //любая из цифр от нуля до пяти
x?                            //символ x может встретиться ноль или один раз («символом» в данном случае может быть и группа (...) и набор символов [...]
\.                            //символ «точка» (без обратного слэша точка является квантификатором, совпадающим с любым (одним) символом)

Например:

cat access_log | egrep -o '([0-9]{1,3}\.){3}[0-9]{1,3}'

Разберем пример:

  • [0-9]{1,3} - означает что диапазон символов от 1 до 3, упомянутого в []. В этом случае это 0-9. поэтому он соответствует шаблонам, например, 10 или 183.
  • Далее следует \.. Обозначение точки, разделяющей адреса.
  • Итак, теперь мы находимся на шаблонах типа "123." "12". и др.
  • Этот шаблон повторяется три раза (с символом "."). Поэтому мы заключим его в скобки. ([0-9]{1,3}\.){3}
  • И, наконец, образец повторяется, но на этот раз без ".". Вот почему мы сохранили его отдельно на третьем этапе. [0-9]{1,3}
  • Если ip находятся в начале каждой строки, используем:
egrep -o '^([0-9]{1,3}\.){3}[0-9]{1,3}'

где "^" - якорь для поиска в начале строки



Полная статья по регулярным выражениям в Wikipedia