runawk е малка опаковка за AWK интерпретатор, че impements модулна система и помага да пише на самостоятелни програми Awk.
<Силен> МОТИВАЦИЯ
След години на използване AWK за програмиране, аз открих, че въпреки
неговата простота и ограничения AWK е достатъчно добър, за написване на широк
набор от различни задачи. AWK не е толкова Мощни като тяхната по-голяма
колеги като Perl, Ruby, TCL и други, но тя има своя собствена
предимства като компактност, простота и достъпност на почти всички
UNIX-подобни системи. Аз лично също така данни задвижване своя характер и
символичен ориентация, много полезна техника за проста обработка на текст
комунални услуги.
Само Че! За съжаление Awk преводачи липсват някои важни особености и
понякога не работи толкова добре, колкото го whould бъде.
Някои проблеми, които виждам (някои от тях, разбира се).
1) AWK липсва подкрепа за модули. Дори и да се създадат малки програми, I
често искате да използвате функциите, създадени по-рано и вече се използва в
други скриптове. Това означава, че whould страхотно да orginise функции в
т.нар библиотеки (модули).
2) За да се премине аргументи да #! / ЮЕсАр / хамбар / AWK -F скрипт (да не AWK
преводач), че е необходимо да prepand списък на
аргументи - (две минус Втора вноска). По мое мнение, това изглежда зле.
<Силен> Пример:
awk_program:
& Nbsp; & Nbsp; & Nbsp; #! / ЮЕсАр / хамбар / AWK -F
& Nbsp; & Nbsp; & Nbsp; BEGIN {
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; за (I = 1; I
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; }
& Nbsp; & Nbsp; & Nbsp; }
Shell сесия:
& Nbsp; & Nbsp; & Nbsp; % Awk_program --opt1 --opt2
& Nbsp; & Nbsp; & Nbsp; / ЮЕсАр / хамбар / AWK: неизвестен опция --opt1 игнорирани
& Nbsp; & Nbsp; & Nbsp; / ЮЕсАр / хамбар / 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) Когато #! / ЮЕсАр / хамбар / AWK -F скрипт дръжки аргументи (опции) и иска
да се чете от стандартния вход, е необходимо да се добавят
/ Dev / стандартния вход (или `- ') като последният аргумент еднозначно.
<Силен> Пример:
awk_program:
& Nbsp; & Nbsp; & Nbsp; #! / ЮЕсАр / хамбар / AWK -F
& Nbsp; & Nbsp; & Nbsp; BEGIN {
& 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.; bmake и 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) (не е задължително!) Да инсталират-директории
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; Мандир - където страници от ръководствата са инсталирани на
& Nbsp; BINOWN - runawk изпълним собственик
& Nbsp; BINGRP - runawk изпълним група
& Nbsp; MANOWN - собственик мъж страница
& Nbsp; MANGRP - мъж страница група
<Силен> Пример:
& Nbsp; & Nbsp; ENV CC = GCC
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; ПРЕФИКС = / Начало / cheusov / местно
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; LDFLAGS = '- L / ЮЕсАр / PKG / либералните -Wl, -rpath -Wl, / ЮЕсАр / PKG / либералните "
& 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 / ЮЕсАр / PKG / включва
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; BINOWN = cheusov
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; BINGRP = потребители
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; MANOWN = cheusov
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; MANGRP = потребители
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; MKCATPAGES = няма
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; направи -s всички инсталирай директории инсталират
Какво ново в тази версия:
- Опциите -i, -I, и всички дълги варианти са напълно отстранени.
- -T The опция е добавен за табово вход.
- Опцията-V е документирано в страницата човек.
- Поправени предупреждения GCC компилация.
- Поправени компилация с непразна MAKEOBJDIR.
- Типо поправки в нови, runcmd.awk и синтетични страници.
Какво ново във версия 1.4.4:
- Бъг при отстраняването поддиректории в временна директория е фиксиран.
- Подобрения за runawk_modules.3.
Какво ново във версия 1.4.3:
- paexec (1) не използва система ( 3) вече за отстраняване на временната директория.
- print_help функцията () е преместен от модула power_getopt.awk да init_getopt.awk.
Какво ново във версия 1.4.2:
- Тази версия добавя runawk_modules.3 където всички модули са документирано, спира поддръжката дълги опции, премахва -I и -I опциите, и включва синтетични страници в архив, за дистрибуция, така pod2man не е необходим за изграждане.
Какво ново във версия 1.4.0:
- В exitnow.awk, на exitnow (статут) функция сега завършва изпълнението на сценария без течаща крайните секции дори ако състоянието == 0.
- Новият модул io.awk включва функциите is_ {файл, реж, EXEC, сокет, FIFO, blockdev, chardev, символна}, file_size и file_type. tokenre.awk има нова функция splitre0 ().
Какво ново във версия 1.3.2:
- Вътрешни масиви са вече преместени автоматично. Това определя използването на runawk (1) в комбинация с xargs (1), например, котка files.txt |. Xargs runawk -Е "..."
Какво ново във версия 1.3.0:
- корекция за Intel C предупреждение компилатор съобщение.
- корекция за shquote функция () от модули / shquote.awk.
- изходния код на проекта е реорганизирана, което позволява лесен монтаж на всеки подобект:. Примери, модули, runawk, alt_getopt и док (TODO, README и др файлове)
Какво ново във версия 1.1.0:
- Прибавя се вариант -F
- Нови ord.awwas ftrans_in.awk, и са включени glob.awk модули.
- Нов alt_getopt изпълним бе включена за разбор къси и дълги опции в шел скриптове.
- New min3, min4, min5, min_key, MIN_VALUE и key_of_min_value (min.awk), и max3, max4, MAX5, max_key, max_value и key_of_max_value са предвидени (max.awk) функции.
- бяха добавени нови проби:. Примери / demo_minmax, примери / demo_tokenre3, примери / demo_ftrans, примери / demo_glob *
- Новост е добавен в multisub.awk.
- малки подобрения бяха направени в инсталационната процедура.
Какво ново във версия 0.16.0:
- бяха създадени Много демо програми за повечето runawk модули и те са в примери / поддиректория сега. New MEGA модул;-) power_getopt.awk вижте документацията и демо програмни примери / demo_power_getopt. Това прави опции работа много лесно. Нови модули: embed_str.awk has_suffix.awk has_prefix.awk readfile.awk modinfo.awk Незначителни поправки и подобрения в dirname.awk и basename.awk. Сега те са напълно съвместими с dirname (1) и basename (1) RUNAWK поставя следните променливи на обкръжението за дете AWK подпроцес на: RUNAWK_MODC - A брой модули (-F името на файла) пусна към AWK RUNAWK_MODV_ - Пълна пътека до #n на модул , където п е в [диапазон 0..RUNAWK_MODC). RUNAWK задава променлива RUNAWK_ART_STDIN среда за детето AWK подпроцес до 1, ако допълнително / изкуствена `- 'е добавен към списъка на аргументите Awk си. Makefile: bmake-изъм бяха отстранени. Сега Makefile е напълно съвместим с FreeBSD грим. CLEANFILES целта се използва вместо ръчно изработени правила Мала корекция в мишена "test_all"
Коментари не е намерена