Как использовать регулярный оператор шаблона {m, n} в grep?

У меня есть текстовый файл, из которого мне нужно выбрать только те строки, которые включают строку «tt». Поэтому я попробовал это в командной строке:

grep "t{2}" textfile 

Несмотря на то, что я знаю, что текстовый файл содержит такие слова, как «гнилой» «мусор», команда grep не показывает строк, однако статус выхода равен 1.

Я попробовал очередной шаблон:

 grep "a.*x" textfile 

для этого он работает.

3 Solutions collect form web for “Как использовать регулярный оператор шаблона {m, n} в grep?”

По умолчанию grep использует Basic Regular Expressions , вам нужно избежать скобок, чтобы grep соответствовал нескольким символам:

 grep 't\{2\}' textfile 

В качестве альтернативы вы можете использовать параметр -E (или параметр -P для GNU grep , который использует регулярные выражения Perl Compatible Regular Express ), что делает использование grep Extended Regular Expressions , которое может использовать фигурные скобки, не избегая их:

 grep -E 't{2}' 

Вам нужно избегать брекетов:

 grep 't\{2\}' textfile 

В противном случае { и } рассматриваются как буквенные символы.

Вам нужно использовать --extended-regexp -E ( --extended-regexp ) или -P ( --perl-regexp ) (с GNU grep).

Согласно справочной странице GNU grep (1) о Basic vs Extended Regular Expressions , то есть, если вы решите не использовать эти параметры:

В основных регулярных выражениях метасимволы?, +, {, |, (, И) теряют свое особое значение; вместо этого используйте backslashed версии \ ?, \ +, \ {, \ |, \ (, и \).

  • egrep несколько шаблонов с тире
  • объединение игнорирования grep и совпадений
  • grep: специальный символ +
  • Совместить данные из двух разных файлов
  • Это хорошая идея, чтобы дополнить сценарий оболочки Perl исключительно для использования регулярных выражений?
  • grep фиксированная строка в конце строки
  • Grep не соответствует символам без ascii
  • Как я могу сопоставить символ разрыва страницы в регулярном выражении?
  • Как grep точное слово с пробелом только как разделитель слов
  • как grep для определенного периода времени в журнале
  • Как grep наиболее часто встречающиеся сообщения об ошибках в файле журнала unix
  • Linux и Unix - лучшая ОС в мире.