Синтаксис регулярного выражения Awk с числом повторений – различная обработка между gawk 3 и gawk 4

У меня возникли проблемы с пониманием или объяснением, почему следующее выражение терпит неудачу в gawk 3.1.x и все же работает в gawk 4.1.x :

(Минимальный рабочий пример)

echo ";#ADCDE#" | awk '/#.{5}#$/' echo ";#ADCDE#" | awk '/#.{5}#$/' -> создает совпадение в gawk 4.1.x , не дает соответствия в gawk 3.1.x

echo ";#ADCDE#" | awk '/#.*#$/' echo ";#ADCDE#" | awk '/#.*#$/' -> создает совпадение в обоих

Что-то изменилось между gawk 3 и 4 в том, как обрабатываются регулярные выражения? Я не думал, что конструкция повторения {n} была новой для регулярных выражений. Такое же поведение происходит, если я изменяю точку (.) С классом символов или [AZ]

  • Я пытаюсь найти файлы и печатать ТОЛЬКО размер этих файлов
  • Объединение содержимого двух файлов со сравнением содержимого столбца
  • Как читать первую и последнюю строку от выхода cat?
  • Добавление новых столбцов в файл csv
  • Удалить целую строку, если после ":" меньше 4 символов
  • Совпадение нескольких шаблонов awk и печать в одной строке
  • Как я могу определить диапазон внутри столбца при создании файла awk?
  • Обрезка полей из файла
  • One Solution collect form web for “Синтаксис регулярного выражения Awk с числом повторений – различная обработка между gawk 3 и gawk 4”

    Добавление --posix работает в 3.1

     echo ";#ADCDE#" | gawk --posix '/#.{5}#$/' 

    у меня есть

     awk --version GNU Awk 3.1.6 ... 

    С моей страницы man awk

      r{n} r{n,} r{n,m} One or two numbers inside braces denote an interval expres‐ sion. If there is one number in the braces, the preceding regular expression r is repeated n times. If there are two numbers separated by a comma, r is repeated n to m times. If there is one number followed by a comma, then r is repeated at least n times. Interval expressions are only available if either --posix or --re-interval is specified on the command line. 
    Interesting Posts
    Linux и Unix - лучшая ОС в мире.