Как использовать регулярный оператор шаблона {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 версии \ ?, \ +, \ {, \ |, \ (, и \).

  • Как выполнить поиск в каталоге файлов данных и распечатать, сколько раз в каждом файле появляется определенное слово?
  • Удалить имя файла при рекурсивном подсчете числа вхождений шаблона
  • Как использовать grep для фильтрации строк, начинающихся с любого из нескольких ключевых слов?
  • Выход Grep Wvdial во время работы
  • Инструмент командной строки для поиска файлов docx
  • Как распечатать только первый матч с помощью grep
  • Как сделать OR grep (с разными настройками GREP_COLOR)
  • grep не совпадает с выходом nc
  • обработка текста: извлечение частей файла и запись их в одну строку
  • Записывать записи для каждой директории в дереве
  • Как выполнить grep -v -e 'expr1' и grep -e 'expr2' в одной команде?
  • Linux и Unix - лучшая ОС в мире.