В чем разница между разными версиями awk?
Я читаю awk здесь, но мне просто интересно узнать о версиях awk, так как раньше у меня возникали проблемы с разными awk. Ниже приведен обзор другой версии, которая у меня есть. Насколько я понимаю, есть awk, mawk и gawk. С gawk, являющимся самым новым / лучшим. Кто-нибудь может уточнить мои предположения? Я использую GNU Awk 4.1.1, самый новый и лучший в использовании, т.е. это gawk? Любые другие комментарии по различным версиям?
env1 - cygwin на моем компьютере
$ awk -Wversion 2>/dev/null || awk --version
GNU Awk 4.1.1, API: 1.1 (GNU MPFR 3.1.2, GNU MP 6.0.0)
Copyright (C) 1989, 1991-2014 Free Software Foundation.
env2 - докер контейнер
$ awk -Wversion 2>/dev/null || awk --version
mawk 1.3.3 Nov 1996, Copyright (C) Michael D. Brennan
EDIT1
согласно комментарию нажмите на теги для awk, gawk и mawkgawk
(сокращение от GNU awk) - бесплатная реализация awk с множеством полезных расширений.Mawk
является реализацией и быстрым процессором языка программирования AWK.AWK
это интерпретируемый язык программирования, разработанный для обработки текста и обычно используемый в качестве инструмента извлечения данных и составления отчетов. Используйте этот тег, только если ваш вопрос касается программирования с использованием API на основе awk или awk. Вопросы, связанные с использованием или устранением неполадок параметров командной строки awk, не относятся к теме.
1 ответ
Основной спецификацией awk будет POSIX, которая описана здесь: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/awk.html
Но есть и другие реализации awk, которые не соответствуют спецификации POSIX; либо потому, что они пропускают функции, добавляют новые или ведут себя иначе.
Например, на этой странице для gawk вы можете прочитать о его расхождениях из спецификации POSIX (например, в некоторых случаях для получения полностью POSIX-поведения --posix
опция должна быть передана в командной строке): https://www.gnu.org/software/gawk/manual/html_node/POSIX_002fGNU.html
Вы упоминаете gawk или mawk; но другие поставщики также предоставляют свою собственную реализацию awk, как в Mac OS X (реализация BSD), Oracle Sun Solaris, IBM AIX, HP-UX и так далее.
По поводу вашего вопроса, который является лучшим: я думаю, это был бы слишком субъективный ответ.
С практической точки зрения я бы просто использовал систему awk
и в случае, если я нахожу это слишком ограничивающим или отличным от того, что я ожидал, я бы продолжил gawk
вместо.