Я щойно почав вивчати awk, і я трохи розгублений у всіх тих версіях навколо. Чи є "версія", яка є у всіх системах, схожих на Unix? Мовляв, ти знаєш, звичайний vi? Чи підтримує стандартний awk варіант -F?
Я щойно почав вивчати awk, і я трохи розгублений у всіх тих версіях навколо. Чи є "версія", яка є у всіх системах, схожих на Unix? Мовляв, ти знаєш, звичайний vi? Чи підтримує стандартний 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
для того, щоб гаук працював відповідно до стандарту 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
.)
Сторінка AWK Вікіпедії - хороша початкова орієнтир для початку розуміння AWK.
Параметр розділювача поля ' -F
' підтримується у всіх варіантах AWK - afaik.
/usr/bin/awk
запускають nawk, або gawk, або BusyBox awk (схожий за поведінкою на gawk).