runawk является крошечный обертка для AWK переводчика, что impements модульную систему и помогает писать отдельные программы AWK.
Мотивация
После нескольких лет использования AWK для программирования я обнаружил, что, несмотря на
его простота и ограничения AWK достаточно хорош для сценариев широкий
спектр различных задач. AWK не так poweful как их больше
коллеги, как Perl, Ruby, TCL и другие, но она имеет свои собственные
преимущества, такие как компактность, простота и доступность практически для всех
UNIX-подобных систем. Я лично хотел свои данные на инициативе и
Маркер ориентации, очень полезная техника для простой обработки текста
коммунальные услуги.
Но! К сожалению затрагивают только переводчики не хватает некоторых важных особенностей и
иногда работают не так хорошо, как это подсчитает быть.
Некоторые проблемы я вижу (некоторые из них, конечно).
1) AWK отсутствует поддержка модулей. Даже если я создаю небольшие программы, я
часто хотят, чтобы использовать функции, созданные ранее и уже используется в
другие сценарии. То есть, это подсчитает здорово orginise функции в
так называемый библиотек (модулей).
2) Для того, чтобы передать аргументы #! / USR / бен / AWK -f скрипт (не AWK
переводчика), необходимо prepand список
споры с - (два минус зодиака). На мой взгляд, это выглядит плохо.
Пример:
awk_program:
И NBSP; & NBSP; & NBSP; #! / USR / бен / AWK -f
И NBSP; & NBSP; & NBSP; НАЧАТЬ {
И NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; для (я = 1; я
И NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; }
И NBSP; & NBSP; & NBSP; }
Shell сессия:
И NBSP; & NBSP; & NBSP; % Awk_program --opt1 --opt2
И NBSP; & NBSP; & NBSP; / USR / бен / AWK: неизвестно вариант --opt1 игнорируются
И NBSP; & NBSP; & NBSP; / USR / бен / AWK: неизвестно вариант --opt2 игнорируются
И NBSP; & NBSP; & NBSP; % Awk_program - --opt1 --opt2
И NBSP; & NBSP; & NBSP; ARGV [1] = - opt1
И NBSP; & NBSP; & NBSP; ARGV [2] = - OPT2
И NBSP; & NBSP; & NBSP; %
По моему мнению, awk_program скрипт должен работать, как это (так же, как
нормальные программы DO)
И NBSP; & NBSP; & NBSP; % Awk_program --opt1 --opt2
И NBSP; & NBSP; & NBSP; ARGV [1] = - opt1
И NBSP; & NBSP; & NBSP; ARGV [2] = - OPT2
И NBSP; & NBSP; & NBSP; %
Это возможно с помощью runawk.
3) При #! / USR / бен / AWK -f скрипт обрабатывает аргументы (параметры) и хочет
читать из стандартного ввода, необходимо добавить
/ DEV / стандартного ввода (или `- ') в качестве последнего аргумента явно.
Пример:
awk_program:
И NBSP; & NBSP; & NBSP; #! / USR / бен / AWK -f
И NBSP; & NBSP; & NBSP; НАЧАТЬ {
И NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; если (ARGV [1] == "--flag") {
И NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; флаг = 1
И NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; ARGV [1] = "" # не читать файл с именем "--flag"
И NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; }
И NBSP; & NBSP; & NBSP; }
И NBSP; & NBSP; & NBSP; {
И NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; печать "флаг =" флаг "$ 0 =" $ 0
И NBSP; & NBSP; & NBSP; }
Shell сессия:
И NBSP; & NBSP; & NBSP; % Эхо тест | awk_program - --flag
И NBSP; & NBSP; & NBSP; % Эхо тест | awk_program - --flag / DEV / стандартного ввода
И NBSP; & NBSP; & NBSP; флаг = 1 $ 0 = тест
И NBSP; & NBSP; & NBSP; %
В идеале awk_program должны работать, как это
И NBSP; & NBSP; & NBSP; Тест% эхо | awk_program --flag
И NBSP; & NBSP; & NBSP; флаг = 1 $ 0 = тест
И NBSP; & NBSP; & NBSP; %
Все эти probles решаются runawk, и именно поэтому я написал это.
Я также включают в себя несколько модулей для runawk распределение которые являются
полезно для меня, и я надеюсь, будет полезно для вас тоже.
Установка
0) BSD марка не требуется. Я называю это просто "сделать", но его настоящее имя может
И NBSP; & NBSP; меняться и NBSP.; BУбедитесь, и pmake являются возможные имена.
И NBSP; & NBSP; Если вам нужно изменить параметры строительные умолчанию,
И NBSP; & NBSP; запустить сделать так
И NBSP; & NBSP; & NBSP; & NBSP; ENV [YOUR_ASSIGNMENTS] сделать <цель>
И NBSP; & NBSP; Смотрите пример ниже раздел
1) Распакуйте архив вы скачали, как это
И NBSP; & NBSP; GZIP -dc runawk-X-Y-Z.tar.gz | смолы -xf-
2) CD-runawk X-Y-Z
3) сделать
4) (опционально!) Сделать Install-каталоги
5) сделать установку
Есть много Makefile переменных, которые могут быть изменены во время
. Установка и NBSP; Собственные переменные Runawk (в Все, что они находятся в начале из
Makefile):
И NBSP; PREFIX и NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; - Где runawk устанавливается в
И NBSP; MODULESDIR и NBSP; & NBSP; & NBSP; & NBSP; - Каталог, в котором модули будут установлены в
И NBSP; AWK_PROG и NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; - Путь к AWK переводчика
И NBSP; STDIN_FILENAME - путь к файлу стандартного ввода устройства
Переменные BSD сделать (в наиболее часто используемых,
для всех остальных - в документации Сделайте х и .mk файлов)
И NBSP; BINDIR - где runawk сам исполняемый файл устанавливается в
И NBSP; MANDIR - где страницы руководства устанавливаются в
И NBSP; BINOWN - runawk исполняемый владельца
И NBSP; BINGRP - runawk исполняемый группу
И NBSP; MANOWN - мужчина владелец страницы
И NBSP; MANGRP - мужчина группы страниц
Пример:
И NBSP; & NBSP; ENV CC = GCC
И NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; PREFIX = / Главная / Чеусов / местный
И NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; LDFLAGS = '- L / USR / Упаковка / Lib -Wl, -rpath -Wl, / USR / Упаковка / Lib'
И NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; LDADD = -lextralib
И NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; CFLAGS = '- Werror -Wall "
И NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; CPPFLAGS = -I / USR / Упаковка / включить
И NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; BINOWN = Чеусов
И NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; BINGRP = Пользователи
И NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; MANOWN = Чеусов
И NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; MANGRP = Пользователи
И NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; MKCATPAGES = нет
И NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; сделать -s все установки, Dirs установить
Что нового в этой версии:
- Параметры -i, -I, и все длинные варианты были полностью удалены.
- опция -T был добавлен для вкладок входа.
- опция -v описано в справочной странице.
- Исправлены ошибки в GCC компиляции предупреждений.
- Исправлены ошибки в составлении с непустым MAKEOBJDIR.
- Typo исправления в новых, runcmd.awk, и человек страниц.
Комментарии не найдены