Команда EGREP, которая печатает все строки, которые содержат подстроку из четырех букв - PullRequest
0 голосов
/ 21 октября 2018

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

Рассмотрим эту строку, и слово side side sideline

должно быть напечатано, поскольку оно содержит подстроку 'side' три раза.

На данный момент у меня есть egrep ([a-zA-Z]{4}), который показывает только части строки с четырьмя последовательными буквами.Моя цель - вернуть всю строку, в то время как она содержит «сторону» 3 раза.Я все еще новичок в регулярных выражениях.Может кто-нибудь объяснить мне, как я мог бы исправить это выражение?

1 Ответ

0 голосов
/ 21 октября 2018

Кажется, вы ищете

grep -E '([[:alpha:]]{4})(.*\1){2}' file

См. regex demo и онлайн grep demo .

Выражениенаходит четыре последовательные буквы и два повторения этой точной подстроки справа, которые могут быть разделены любыми 0+ символами.

Подробности

  • ([[:alpha:]]{4}) -группа захвата № 1: четыре (из-за диапазона / интервала / ограничивающего квантификатора {4}) букв ([[:alpha:]] соответствует любой букве)
  • (.*\1){2} - два повторения:
    • .* - любые 0+ символов
    • \1 - значение, занесенное в группу 1 (= текст соответствует [[:alpha:]]{4}).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...