Я только начал изучать 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 (реализация Брайана В. Кернигана) и так далее.
/usr/bin/awk
запускается nawk, или gawk, или BusyBox awk (похожий по поведению на gawk).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.4awk
будет присутствовать почти на каждой системе * NIX, но точная спецификация того, что она поддерживает, немного сместится, поскольку вполне возможно, что она просто будет символически связана с другой версией, похожей на то, как/bin/sh
часто она связана с определенной оболочкой, частоbash
или с одной из его производные. (vi
Кстати , я также знаю много машин, на которых есть ссылкиvim
).источник
Страница Wikipedia AWK - хороший стартовый справочник для начинающих понимать AWK.
Опция Разделитель полей '
-F
' поддерживается во всех вариантах AWK - afaik.источник