АнглийскийФранцузскийИспанский

Значок OnWorks

runawk - Интернет в облаке

Запустите runawk в бесплатном хостинг-провайдере OnWorks через Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS

Это команда runawk, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.

ПРОГРАММА:

ИМЯ


runawk - оболочка для интерпретатора AWK

СИНТАКСИС


беглец [опции] файл_программы

беглец -e программа

МОТИВАЦИЯ


После многих лет использования AWK для программирования я обнаружил, что, несмотря на его простоту и
ограничения AWK достаточно хорош для написания сценариев для широкого круга различных задач. AWK не
такие же мощные, как и их более крупные аналоги, такие как Perl, Ruby, TCL и другие, но у него есть свои
собственные преимущества, такие как компактность, простота и доступность практически на всех UNIX-подобных
системы. Мне лично также нравится его управляемость данными и ориентация на токены, что очень полезно
методы для утилит обработки текста.

К сожалению, интерпретаторам awk не хватает некоторых важных функций, и они иногда не работают как
хорошо, как могли.

Проблемы, которые я вижу (некоторые из них, конечно)

1.
AWK не поддерживает модули. Даже если я создаю небольшие программы, я часто хочу использовать
функции, созданные ранее и уже используемые в других скриптах. То есть было бы здорово
организовывать функции в так называемые библиотеки (модули).

2.
Чтобы передать аргументы в "#!"/ USR / bin / awk -f "скрипт (не для интерпретатора awk), это
необходимо добавить к списку аргументов - (два знака минус). На мой взгляд, это
плохо выглядит. Также такое поведение нарушает "Рекомендации по синтаксису служебных программ" POSIX / SUS.

Пример:

awk_программа:

#!/ USR / bin / awk -f

НАЧАТЬ {
for (i = 1; i <ARGC; ++ i) {
printf "ARGV [% d] =% s \ n", i, ARGV [i]
}
}

Сессия оболочки:

% awk_program --opt1 --opt2
/ USR / bin / awk: unknown option --opt1 игнорируется

/ USR / bin / awk: unknown option --opt2 игнорируется

% awk_program - --opt1 --opt2
ARGV [1] = - opt1
ARGV [2] = - opt2
%

по моему мнению awk_program скрипт должен работать так

% awk_program --opt1 --opt2
ARGV [1] = - opt1
ARGV [2] = - opt2
%

3.
Когда "#!/ USR / bin / awk -f "сценарий обрабатывает аргументы (параметры) и хочет читать из
stdin, необходимо явно добавить / dev / stdin (или `- ') в качестве последнего аргумента.

Пример:

awk_программа:

#!/ USR / bin / awk -f

НАЧАТЬ {
if (ARGV [1] == "--flag") {
флаг = 1
ARGV [1] = "" # чтобы не читать файл с именем "--flag"
}
}

{
print "flag =" flag "$ 0 =" $ 0
}

Сессия оболочки:

% эхо-тест | awk_program - --flag
% эхо-тест | awk_program - --flag / dev / stdin
flag = 1 $ 0 = тест
%

Идеально awk_program должно работать так

% эхо-тест | awk_program --flag
flag = 1 $ 0 = тест
%

4.
игаук(1), который поставляется с GNU awk, нельзя использовать в shebang. На большинстве (всех?)
Сценарии UNIX, начинающиеся с

#! / usr / local / bin / igawk -f

не будет работать.

беглец был создан для решения всех этих проблем

ДОПОЛНИТЕЛЬНЫЕ ОПЦИИ


-d Включите режим отладки.

-e программа
Уточняйте программу. Если -e не указан, код AWK читается из файл_программы.

-f awk_module
активировать awk_module. Это работает так же, как

#use "awk_module.awk"

директива в коде. Несколько -f варианты разрешены.

-F fs Установите разделитель полей ввода FS на регулярное выражение fs.

-h Показать справочную информацию.

-t Если этот параметр применен, временный каталог создается беглец и путь к нему
передается AWK дочерний процесс. Временный каталог создается в
$ {RUNAWK_TMPDIR} (если он установлен), или $ {TMPDIR} (если он установлен), или / Tmp каталог
в противном случае. Если #use "tmpfile.awk" обнаружен в программе эта опция активирована
автоматически.

-T Установите FS на символ TAB. Это эквивалентно -F '\ t'

-V Показать информацию о версии.

-v вар=волна
Присвойте значение волна к переменной вар до начала выполнения программы.

ДЕТАЛИ / ВНУТРЕННЯЯ ИНФОРМАЦИЯ


Автономные скрипт
В UNIX-подобных ОС вы можете использовать беглец начав свой сценарий с

#! / usr / local / bin / runawk

строка или что-то в этом роде вместо

#!/ USR / bin / awk -f

или подобный раздел.

AWK модули
Чтобы активировать модули, вы должны добавить их в скрипт awk следующим образом

# использовать "module1.awk"
# использовать "module2.awk"

это строка, которая определяет имя модуля, рассматривается как строка комментария обычным AWK
интерпретатор, но обрабатывается беглец особенно.

Если ты не убежишь беглец с опцией -e, #use должен начинаться со столбца 0, то есть без пробелов или
символы табуляции разрешены перед ним, и никакие символы не допускаются между # и использование.

Также обратите внимание, что модули AWK также могут «использовать» другие модули и так далее. Все они
собираются в порядке глубины, и каждый из них добавляется в список интерпретатора awk
аргументы предваряются опцией -f. То есть #use директива * НЕ * похожа на #включают
в языке программирования C код модуля runawk не вставляется вместо #use.
Модули Runawk ближе к команде Perl "use". В случае упоминания какого-либо модуля
более одного раза, для него будет добавлен только один -f, т. е. удаляются дубликаты
автоматически.

Положение #use директива в исходном файле имеет значение, т. е. более ранний модуль
уже упоминалось, для него будет сгенерирован предыдущий -f.

Пример:

файл прога:
#! / usr / local / bin / runawk

#use "A.awk"
#use "B.awk"
#use "E.awk"

Код ПРОГ
...

файл B.awk:
#use "A.awk"
#use "C.awk"
B код
...

файл C.awk:
#use "A.awk"
#use "D.awk"

Код C
...

A.awk и D.awk не содержат директивы #use

Если вы запустите

прога прога файл1 файл2

or

/ путь / к / prog file1 file2

следующая команда

awk -f A.awk -f D.awk -f C.awk -f B.awk -f E.awk -f prog - file1 file2

действительно будет работать.

Вы можете проверить это, запустив

runawk -d прога файл1 файл2

Модули по области применения стратегия
Модули сначала ищутся в каталоге, в котором находится основная программа (или модуль, в котором #use
указана директива). Если его там нет, тогда среда AWKPATH
переменная проверяется. AWKPATH хранит список каталогов поиска, разделенных двоеточиями. Наконец-то,
модуль ищется в системном каталоге модулей runawk, по умолчанию PREFIX / share / runawk, но
это можно изменить во время компиляции.

Также можно указать абсолютный путь к модулю.

Программа as an аргумент
Как и некоторые другие переводчики беглец можно получить сценарий из командной строки, подобной этой

/ путь / к / runawk -e '
#use "alt_assert.awk"

{
assert ($ 1> = 0 && $ 1 <= 10, "Плохое значение:" $ 1)

# ваш код ниже
...
}'

беглец также можно использовать для написания одностраничных лайнеров

runawk -f abs.awk -e 'НАЧАТЬ {print abs (-1)}'

Выбор a привилегированный AWK переводчик
По какой-то причине вы можете предпочесть тот или иной интерпретатор AWK. Причина может быть в
эффективность для конкретной задачи, полезные, но не стандартные расширения или что-то еще. К
сказать беглец какой интерпретатор AWK использовать, можно использовать #интерп Директивы

файл прога:
#! / usr / local / bin / runawk

#use "A.awk"
#use "B.awk"

#interp "/ usr / pkg / bin / nbawk"

# здесь ваш код
...

Обратите внимание, что #интерп директива также должна начинаться со столбца 0, перед ним не допускаются пробелы.
это и между # и интерп.

Иногда также имеет смысл дать пользователям возможность выбрать предпочитаемый AWK.
интерпретатор без изменения исходного кода. В беглец возможно использование специальных
Директивы # interp-var который устанавливает имя переменной среды, назначаемое пользователем, которое
указывает интерпретатор AWK. Например, следующий скрипт

файл foobar:
#!/ usr / bin / env беглец

# interp-var "FOOBAR_AWK"

НАЧАТЬ {
print "Это приложение FooBar"
}

может быть запущен как

env FOOBAR_AWK = mawk foobar

или просто

Foobar

В первом случае Mawk будет использоваться как интерпретатор AWK, в последнем - AWK по умолчанию
переводчик.

. существующий модули Важно
В мире UNIX принято писать файлы конфигурации на каком-либо языке программирования.
приложения. То есть, если приложение написано в оболочке Bourne, конфигурация
файлы для такого приложения также часто пишутся на Bourne. Используя RunAWK, можно делать
то же самое для приложений, написанных на AWK. Например, следующий код будет использовать
~ / .foobarrc файл, если он существует, в противном случае будет использоваться /etc/foobar.conf, если он существует.

файл foobar:
#!/ usr / bin / env беглец

# безопасное использование "~ / .foobarrc"" /etc/foobar.conf "

НАЧАТЬ {
печать foo, bar, baz
}

файл ~ / .foobarrc:
НАЧАТЬ {
foo = "foo10"
bar = "bar20"
баз = 123
}

Конечно, # безопасное использование Директива также может использоваться для других целей. # безопасное использование
Директива принимает столько модулей, сколько вы хотите, но максимум один может быть включен с помощью awk
option -f, остальные игнорируются, также обратите внимание, что модули анализируются слева направо.
Правильно. Начальная тильда в имени модуля заменяется домашним каталогом пользователя. Другой
пример:

файл foobar:
#!/ usr / bin / env беглец

# использовать "/usr/share/foobar/default.conf"
# безопасное использование "~ / .foobarrc"" /etc/foobar.conf "

ваш код здесь

Здесь настройки по умолчанию установлены в /usr/share/foobar/default.conf, а конфигурация
файлы (если есть) используются для их отмены.

настройка охрана окружающей среды
В некоторых случаях вам может потребоваться запустить интерпретатор AWK в определенной среде. Для
Например, ваш скрипт может быть ориентирован только на обработку текста ASCII. В этом случае вы можете запустить
AWK со средой LC_CTYPE = C и использовать диапазоны регулярных выражений.

беглец приводит #окр. директива для этого. Строка в двойных кавычках передается в
путенв(3) функция libc.

Пример:

файл прога:
#! / usr / local / bin / runawk

#env "LC_ALL = C"

$ 1 ~ / ^ [AZ] + $ / {# AZ действителен, если LC_CTYPE = C
распечатать $ 1
}

ВЫХОД статус


Если интерпретатор AWK нормально завершает работу, беглец выходит со своим статусом выхода. Если интерпретатор AWK
был убит сигналом, беглец выходит со статусом выхода 128 + сигнал.

ОКРУЖАЮЩАЯ СРЕДА


ПУТЬ AWKPATH
Список каталогов, разделенных двоеточием, в которых AWK модули ищутся.

RUNAWK_AWKPROG
Устанавливает путь к интерпретатору AWK, который используется по умолчанию, т.е. эта переменная переопределяет
время компиляции по умолчанию. Обратите внимание, что директива #interp отменяет это.

RUNAWK_KEEPTMP
Если установлено, временные файлы не удаляются.

Используйте runawk онлайн с помощью сервисов onworks.net


Бесплатные серверы и рабочие станции

Скачать приложения для Windows и Linux

  • 1
    SuiteCRM
    SuiteCRM
    SuiteCRM — отмеченный наградами клиент
    Управление взаимоотношениями (CRM)
    приложение, представленное вам авторами
    и сопровождающие, SalesAgility. Это
    самый лучший в мире...
    Загрузить SuiteCRM
  • 2
    Poweradmin
    Poweradmin
    Poweradmin — это веб-сервер DNS.
    инструмент администрирования для сервера PowerDNS.
    Интерфейс имеет полную поддержку большинства
    возможностей PowerDNS. Он имеет полный
    служба поддержки...
    Скачать Poweradmin
  • 3
    Джин Веб Фреймворк
    Джин Веб Фреймворк
    Джин - невероятно быстрый веб-фреймворк
    написано на Голанге, может выполнять до
    В 40 раз быстрее благодаря
    мартини-подобный API и кастомная версия
    httprout ...
    Скачать Gin Web Framework
  • 4
    ЦЕРЕУС ЛИНУКС
    ЦЕРЕУС ЛИНУКС
    CEREUS LINUX базируется на MX LINUX con
    различные энторнос де эскриториос. Это
    приложение, которое также можно получить
    к
    https://sourceforge.net/projects/cereu...
    Скачать CEREUS LINUX
  • 5
    Тренер по задачам
    Тренер по задачам
    Task Coach - Ваше дружеское задание
    управляющий делами. Task Coach — это бесплатная открытая
    источник todo менеджер. Он вырос из
    разочарование по поводу других программ не
    работа с композитом...
    Скачать тренер задач
  • 6
    Ядро СУБД HyperSQL (HSQLDB)
    Ядро СУБД HyperSQL (HSQLDB)
    HSQLDB — это механизм реляционной базы данных.
    написан на Java, с драйвером JDBC,
    соответствующий ANSI SQL:2016. Маленький,
    быстрый, многопоточный движок и сервер
    с памятью...
    Загрузите ядро ​​базы данных HyperSQL (HSQLDB)
  • Больше »

Команды Linux

Ad