Я только начал изучать awk, и я немного запутался во всех этих версиях. Есть ли какая-нибудь "версия", которая встречается во всех Unix-подобных системах? Как, вы знаете, простой ви? Стандартный awk поддерживает опцию -F?
Я только начал изучать awk, и я немного запутался во всех этих версиях. Есть ли какая-нибудь "версия", которая встречается во всех Unix-подобных системах? Как, вы знаете, простой ви? Стандартный awk поддерживает опцию -F?
Ответы:
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 (реализация Брайана В. Кернигана) и так далее.
file /etc/alternatives/awk
Возвращается командная строкаsymbolic link to /usr/bin/mawk
Вы можете просто использовать awk
. Он определяется POSIX и поэтому должен существовать во всех POSIX-совместимых системах.
-F
Параметр мандат, который , как хорошо.
gensub()
тестируйте с awk
-> gawk
и думайте, что вы готовы пойти ...
gawk --posix
чтобы заставить gawk работать в соответствии со стандартом POSIX. Он также проверяет ваш сценарий на соответствие стандарту. Вы можете использовать awk --posix '' 2>/dev/null
в Ubuntu независимо от того, используются ли gawk, mawk или original-awk в качестве awk, но опция posix распознается только gawk. --posix должен быть последним вариантом для оригинала-awk. Вы можете использовать awk -W posix ''
с gawk и mawk.
mawk --posix ''
не работает, если вы используете mawk 1.3.3, но преуспевает с сообщением об ошибке, если вы используете mawk 1.3.4
awk
будет присутствовать почти на каждой системе * NIX, но точная спецификация того, что она поддерживает, немного сместится, поскольку вполне возможно, что она просто будет символически связана с другой версией, похожей на то, как /bin/sh
часто она связана с определенной оболочкой, часто bash
или с одной из его производные. ( vi
Кстати , я также знаю много машин, на которых есть ссылки vim
).
Страница Wikipedia AWK - хороший стартовый справочник для начинающих понимать AWK.
Опция Разделитель полей ' -F
' поддерживается во всех вариантах AWK - afaik.
/usr/bin/awk
запускается nawk, или gawk, или BusyBox awk (похожий по поведению на gawk).