Я только начал изучать 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).