В конце прошлого месяца мы поделились здесь в блоге новостью о том, что Брайан Керниган, один из создателей AWK подтвердил, что продолжается за кодом AWK, оказывая поддержку и улучшая этот язык обработки (вы можете ознакомиться с новостями в следующая ссылка.)
Причиной упоминания об этом является то, что в последнее время выпущена новая версия реализации GNU-Gawk 5.2.0 языка программирования AWK.
AWK был разработан в 70-х годах и не претерпевал существенных изменений с середины 80-х, когда был определен основной костяк языка, позволивший сохранить первоначальную стабильность и простоту языка во времени и во времени. десятилетия.
AWK была одной из первых консольных утилит. популярен для управления (обработки/извлечения) данных за счет максимальной функциональности конвейеров UNIX. Язык, предоставляемый этой утилитой, в настоящее время является стандартом почти во всех современных операционных системах типа UNIX, настолько, что он является частью основных спецификаций UNIX, поэтому обычно он уже установлен в большинстве из них по умолчанию.
Несмотря на преклонный возраст, админы по-прежнему активно используют AWK для выполнения рутинной работы, связанной с разбором различных типов текстовых файлов и формированием простой результирующей статистики.
Эта команда предоставляет язык сценариев для обработки текста, с помощью которого мы можем: Определять переменные, использовать строки и арифметические операторы, использовать управление потоком и циклы и создавать форматированные отчеты. На самом деле, Awk — это больше, чем простая команда обработки шаблонов, это целый язык семантического анализа.
Основные новые функции GNU Awk 5.2
В представленной новой версии подчеркивается, что добавлена экспериментальная поддержка менеджера памяти pma (постоянный malloc), который позволяет сохранять значения переменных, массивов и пользовательских функций между разными запусками awk.
Еще одно изменение, которое выделяется в этой новой версии, заключается в том, что изменена логика сравнения чисел, что соответствует логике, используемой в языке C. Для пользователей изменение в основном касается сравнения значений Infinity и NaN с обычными номерами.
Кроме того, также отмечается, что возможность использования хеш-функции FNV1-A в ассоциативных массивах это включается установкой переменной окружения AWK_HASH в «fnv1a».
В режиме BWK указание флага «–traditional» по умолчанию включает совместимость с ранее включенными выражениями диапазона с параметром «-r» («–re-interval»).
Расширение rwarray предоставляет новые функции writeall() и readall() для одновременной записи и чтения всех переменных и массивов.
В дополнение к этому, поддержка высокоточной арифметики, был реализован с использованием библиотеки MPFR, в дополнение к снят с ответственности сопровождающего GNU Awk и переданы стороннему энтузиасту. Отмечается, что реализация GNU Awk в режиме MPFR считается ошибкой. В случае устойчивого изменения состояния планируется полностью удалить эту функцию из GNU Awk.
Из других изменений которые выделяются из этой новой версии:
- Обновлены компоненты инфраструктуры сборки Libtool 2.4.7 и Bison 3.8.2.
- Убрана поддержка компиляции с помощью CMake (поддержка кода для CMake не была востребована и не обновлялась пять лет).
- Добавлена функция mkbool() для создания логических значений, которые являются числами, но обрабатываются как логический тип.
- Добавлен скрипт gawkbug для сообщения об ошибках.
- Предусмотрено мгновенное отключение при синтаксических ошибках, решение проблем с помощью инструментов фаззинга.
- Было проведено множество мелких подчисток кода и исправлений ошибок.
- Удалена поддержка операционных систем OS/2 и VAX/VMS.
В конце концов, если вам интересно узнать об этом больше, вы можете проверить подробности По следующей ссылке.