Я только начал изучать awk и немного запутался во всех этих версиях. Есть ли какая-либо "версия", которая встречается во всех Unix-подобных системах? Как, вы знаете, простой ви? Стандартный awk поддерживает опцию -F?
5 ответов
awk - наиболее распространенный и будет встречаться на большинстве Unix-подобных систем, самая старая версия и уступающая новым.
mawk - быстрая реализация AWK, основа кода которой основана на интерпретаторе байт-кода.
nawk - во время разработки языка AWK авторы выпустили новую версию (отсюда n - n ew awk), чтобы избежать путаницы. Думайте об этом как о Python 3.0 AWK.
gawk - сокращенно от GNU awk. Единственная версия, в которой разработчики пытались добавить поддержку i18n. Позволял пользователям писать свои собственные разделяемые библиотеки C, чтобы расширять их с помощью своих собственных плагинов. Эта версия является стандартной реализацией для Linux, оригинальный AWK был написан для Unix v7.
Существуют и другие версии, такие как jawk (реализация java), bwk (реализация Брайана В. Кернигана) и так далее.
Вы можете просто использовать awk
. Он определяется POSIX и поэтому должен существовать во всех POSIX-совместимых системах.
Параметр -F
является обязательным .
Сначала быстрый ответ:
Вам не нужно беспокоиться: awk
вашей системы - это просто символическая ссылка на mawk
или gawk
И, что более важно: все три версии, awk
, mawk
и gawk
полностью совместимы. Существует (говорят, что) разница в скорости между awk
/gawk
и mawk
которая, как говорят, быстрее.
Единственное исключение - nawk
которому не хватает некоторой функциональности, но шансов найти его в дикой природе довольно мало.
awk
будет присутствовать практически на каждой системе * NIX, но точная спецификация того, что он поддерживает, немного сместится, так как вполне возможно, что он просто будет ссылаться на другую версию, подобную тому, как /bin/sh
часто связан с определенной оболочкой часто bash
или один из его производных. (Для справки, я также знаю много машин, на которых vi
связана с vim
.)
Страница Wikipedia AWK - хороший стартовый справочник для начинающих понимать AWK.
Опция Разделитель полей ' -F
' поддерживается во всех вариантах AWK - afaik.