Помогите понять выражение egrep

Я наткнулся на следующее выражение egrep:

egrep '^([^aieou]*[aieou]){5,7}[^aieou]*$' /usr/share/dict/words 

на этой странице: http://matt.might.net/articles/sculpting-text

Предполагается, что выражение должно найти слова, содержащие от 5 до 7 гласных.

Я понимаю первое значение ^ с начала строки и второе ^, чтобы отрицать любое из aieou, за которым следует любое количество символов и один из aeiou между 5 и 7 раз. Но я не [^aieou] как здесь используются первые и последние выражения: [^aieou] ?

One Solution collect form web for “Помогите понять выражение egrep”

Он ищет нуль или более согласных ( [^aieou]* ), за которыми следуют 5-7 гласных ( ([aieou]){5,7} ), за которыми следуют ноль или более согласных ( [^aieou]* ). Все регулярное выражение привязано к началу строки ( ^ ) и окончанию ( $ ).

пример

 $ egrep '^([^aieou]*[aieou]){5,7}[^aieou]*$' \ /usr/share/dict/words | head -10 abacinate abacination abacterial abaisance abalation abalienate abalienated abalienating abalienation abandonable 

Детали

Поэтому, когда он совпадает с этим первым словом, abacinate , первая буква a имеет 0 согласных слева, поэтому мы сопоставляем эту часть.

Поскольку дополнительные гласные с нулевым или большим количеством согласных находятся слева и / или справа, мы также сопоставляем эти ситуации. Если мы найдем от 5 до 7 из них, то мы сопоставим.

  • grep соответствует всем вхождениям нескольких регулярных выражений
  • Какова цель этих специальных символов в команде sed?
  • Как я могу сгладить два шаблона из одного файла и направить строки на разные выходные файлы в зависимости от того, какая совпадение соответствует?
  • bash для выполнения чего-то, когда ключевое слово, увиденное на stdin
  • Запуск grep или других команд в файлах на веб-сервере
  • Чтение шаблонов grep из файла
  • Усреднение по многим строкам данных
  • Как извлечь число из строки ниже, которая является выводом команды?
  • Подключения к серверу мониторинга - проблема форматирования Netstat
  • grep, чтобы найти экземпляры «Foo», где «Bar» не отображается в пределах 10 строк
  • Как grep несколько файлов, используя часть имени файла как шаблон?
  • Linux и Unix - лучшая ОС в мире.