После двух лет разработки и спустя десять лет после формирования прошлой стабильной ветки 3.1 представлен (http://lists.gnu.org/archive/html/info-gnu/2011-06/msg00013....) новый значительный релиз реализации языка программирования AWK от проекта GNU - Gawk 4.0.0 (http://www.gnu.org/software/gawk). Язык был разработан в 70-х годах прошлого века и не претерпел значительных изменений с середины 80-х годов, в которых был определен основной костяк AWK, что позволило на протяжении последних десятилетий сохранить первозданную стабильность и простоту языка. Несмотря на длительную историю AWK до сих пор активно используется администраторами для выполнения рутинных работ, связанных с парсингом различного рода структурированных текстовых файлов и генерации несложной результирующей статистики.В новой версии устранены некоторое слабые стороны Gawk и отражены в языке современные реалии. Из добавленных улучшений можно отметить:
- Переработана внутренняя архитектура, проведена чистка кода...URL: http://lists.gnu.org/archive/html/info-gnu/2011-06/msg00013....
Новость: http://www.opennet.me/opennews/art.shtml?num=31067
> "Microsoft Compiler"wtf?
который в Visual Studio?
Читай по ссылке, имеется ввиду Microsoft-версия GCC.
Ты сам-то читал? Имеется ввиду сборка под МС-ДОС. Там, наверное, какой-нибудь древнючий Quick C был.
В МС-ДОС нет поддержки IPv6,какой тогда ещё Quick C?
Выпилина поддержка 16-битного МС-ДОС компилятора Microsoft C 7. А с тем, что в МС-ДОС нет поддержки IPv6, никто не спорит.
> Поддержка IPv6;Ничего так язык программирования :)
Поддержка IPv6;
???
http://www.opennet.me/openforum/vsluhforumID3/74306.html#16
Ну осталось теперь дождаться портов для Apache и nginx и в принципе чем не язык...
AWK - отличная штука!
Добавили бы еще нормальную функциональность с бинарными файлами,
цены бы не было.
Идея из серии: Если бы подводную лодку научить летать, цены бы ей не было...awk - это классическая Unix-tools, которая делает что-то одно. но делает это очень хорошо. Не нужно ему бинарных файлов. И IPv6 ему совсем ни к чему. И вообще что это такое поддержка ipv6?
Про подводную лодку: не в тему. ПЛ научить летать сложно. А добавить анализ бинарных файлов НЕ ТАК СЛОЖНО. Вот сейчас появился костыль: "Новая опция "--characters-as-bytes" ("-b")..." -- но это лишь костыль. А сделать надо удобнее."...которая делает что-то одно..." -- Ну, да... А что это, что-то одно?
Если анализ буквенных строк -- то слишком узко. Хотелось бы, чтобы это было просто
*анализ строк*, там, где и нон-аски байты можно обрабатывать аналогично аски-байтам.А IPv6 действительно ни к чему.
> Про подводную лодку: не в тему. ПЛ научить летать сложно. А добавить
> анализ бинарных файлов НЕ ТАК СЛОЖНО.Вот он, источник монстроидальных программ нашего времени, которые отпугивают своей навороченностью. Самый свежий пример из жизни:
Решил дома заморочиться и перевести бэкапы домашних тачек с самописных скриптов на Bacula. Как-то так вышло, что близко не общался до этих пор с этой системой, лишь издалека видел, надо ж заценить, чего её так коллеги хвалят. В общем, на изучение опций, въезжание в архитектуру, написание и отладку конфигов и проч. ушло две ночи. На те самые самописные скрипты (с ротейтом, сливающие данные по защищённому каналу, с инкрементными бэкапами, всё как полагается) ушла всего одна. А самое смешное, что суммарный размер _конфигов_ Bacula получился больше, чем размер этих самых скриптов. При том, что машин дома всего 4 (роутер, файлопомойка, десктоп, ноут).
Почему? Да потому что Bacula очень многое реализует, что реализовать «не так сложно». Не сложно с хостами самостоятельно соединяться, а не через тот же SSH. Не сложно сделать свой файлосниматель, а не использовать dump(8), под который уже заточены соответствующие части системы.
Не всё, что не сложно сделать, стоит делать. Кто против, пусть выбросится из окна повыше, это ведь совсем несложно, правда?
> Вот сейчас появился костыль: "Новая
> опция "--characters-as-bytes" ("-b")..." -- но это лишь костыль. А сделать надо
> удобнее.
> "...которая делает что-то одно..." -- Ну, да... А что это, что-то одно?Например, фильтрует строки и выполняет указываемые в скрипте действия в зависимости от результатов фильтрации.
> Если анализ буквенных строк -- то слишком узко. Хотелось бы, чтобы это
> было просто
> *анализ строк*, там, где и нон-аски байты можно обрабатывать аналогично аски-байтам.Их и сейчас можно обрабатывать. Выставляйте свои FS, RS и т.д. Если вам это не подходит, то вы просто не по адресу, ибо это означает, что у вас не строковые данные.
> А IPv6 действительно ни к чему.
Ну, положим, если уже есть /iner/, то добавление /inet6/ как раз логично.
>> Если анализ буквенных строк -- то слишком узко. Хотелось бы, чтобы это
>> было просто
>> *анализ строк*, там, где и нон-аски байты можно обрабатывать аналогично аски-байтам.
> Их и сейчас можно обрабатывать. Выставляйте свои FS, RS и т.д. Если
> вам это не подходит, то вы просто не по адресу, ибо
> это означает, что у вас не строковые данные.--- Скажите мне, что такое "строковые данные" ? -- это не придирка, а суть.
Лет сто назад ;) это считалось ASCII-с-CR-в-конце. У вас также?--- Чтобы не ударяться в философию, рассмотрим пример, где AWK мог бы применяться, но сейчас это сделать сложно: файл *.gif начинается с букв "GIF", а потом идет инфо о картинке: размер, цвет и др. - бинарная. Это - заголовок файла. Почти "строковые данные".
Таких примеров много.
>>> Если анализ буквенных строк -- то слишком узко. Хотелось бы, чтобы это
>>> было просто
>>> *анализ строк*, там, где и нон-аски байты можно обрабатывать аналогично аски-байтам.
>> Их и сейчас можно обрабатывать. Выставляйте свои FS, RS и т.д. Если
>> вам это не подходит, то вы просто не по адресу, ибо
>> это означает, что у вас не строковые данные.
> --- Скажите мне, что такое "строковые данные" ? -- это не придирка,
> а суть.
> Лет сто назад ;) это считалось ASCII-с-CR-в-конце. У вас также?Это в Си так считалось. Есть и другие, не менее древние языки. ;) Строка — одномерный набор последовательно расположенных однотипных элементов с заранее неизвестным их количеством. Количество элементов в строке может определяться либо отдельной сущностью (как строки в Pascal, например), либо терминатором (C), либо вообще и так, и сяк (Visual Basic). awk работает со строками с терминаторами.
> --- Чтобы не ударяться в философию, рассмотрим пример, где AWK мог бы
> применяться, но сейчас это сделать сложно: файл *.gif начинается с букв
> "GIF", а потом идет инфо о картинке: размер, цвет и др.
> - бинарная. Это - заголовок файла. Почти "строковые данные".
> Таких примеров много.Не путайте «текстовые данные» и «строковые данные». В данном случае мы имеем упакованную структуру, а не набор строк. awk для обработки таких данных не предназначен. Вам надо что-то вроде pack/unpack() из Perl. Используйте подходящий инструмент, не надо плоскогубцами шурупы закручивать. :)
> Лет сто назад ;) это считалось ASCII-с-CR-в-конце. У вас также?LF в православных ОС и CR + LF в протестантских.
> Чтобы не ударяться в философию, рассмотрим пример, где AWK мог бы применяться, но сейчас это сделать сложно: файл *.gif начинается с букв "GIF", а потом идет инфо о картинке: размер, цвет и др. - бинарная. Это - заголовок файла. Почти "строковые данные".
это совсем _не_ строковые данные. Чтобы парсить такие "строки" нужны совершенно другие инструменты и awk под это нормально не переделать. Может быть даже уже есть такие готовые инструменты, но они никогда не были так популярны как различного рода _строковые_ потоковые редакторы.
>> Лет сто назад ;) это считалось ASCII-с-CR-в-конце. У вас также?
> LF в православных ОС и CR + LF в протестантских.Вообще-то, CRLF для обозначения конца строки старше LF. Это в Unix и Apple решили байтик сэкономить (и упростить программирование).
Ну хорошо, пусть будет CRLF в старообрядных ОС. Да, так даже лучше подходит для маразма времён пиш. машинок.
Это у вас-то с вашими демонами и зомби православная система?! Богохульцы!
amanda должна вам понравится. Хотя для ваших задач вообще не нужна система такого типа, подойдёт что-то проще типа backuppc
> amanda должна вам понравится. Хотя для ваших задач вообще не нужна система
> такого типа, подойдёт что-то проще типа backuppcПро Аманду знаю, она уже на очереди; backuppc ещё не рассматривал, спасибо. :) Обзор что ли подготовить. :))) Если руки дойдут, конечно, а не как обычно...
в (g)awk нет ни одного инструмента для работы с бинарными данными. И его архитектура не позволяет это сделать не через задницу.> Вот сейчас появился костыль: "Новая опция "--characters-as-bytes" ("-b")..." -- но это лишь костыль. А сделать надо удобнее.
это только для устранения влияния локали на парсинг строк, т.е. ещё один костыль для утилиты которая не знает что такое различные кодировки.
> в (g)awk нет ни одного инструмента для работы с бинарными данными.
> И его архитектура не позволяет это сделать не через задницу.--- Именно об этом речь!
Есть масса примеров, где в строках и буквы и не-буквы. Если заточить
под это АВК - цены ему не будет, ибо он в сто раз проще перла, но практически
такой же по возможностям.
> Есть масса примеров, где в строках и буквы и не-буквы. Если заточить
> под это АВК - цены ему не будет,У меня awk прекрасно парсит логи, содержащие не-буквы (ANSI-последовательности для цветов). Я что-то делаю не так?
> парсит логи, содержащие не-буквы (ANSI-последовательности для цветов).
> Я что-то делаю не так?Один байт (ESC) в тексе читать/парсить/писать не мудрено, а вот uint32 какой-нибудь... Ну, там заголовки ip пакетов или бинарники типа ELF, например. "Слегка" неудобно, скажем.
И да, понятно, что этот инструмент не для этой задачи.
> Вот сейчас появился костыль: "Новая
> опция "--characters-as-bytes" ("-b")..." -- но это лишь костыль. А сделать надо
> удобнее.Эта опция на самом деле не нужна. LANG=C — и вперёд.
> Если анализ буквенных строк -- то слишком узко. Хотелось бы, чтобы это
> было просто
> *анализ строк*, там, где и нон-аски байты можно обрабатывать аналогично аски-байтам.А сейчас что мешает?
Для бинарных данных есть Sawzall (http://www.opennet.me/opennews/art.shtml?num=28590).
> Отладчик dgawk, напоминающий в процессе работы на GDB;какой-то фетиш нездоровый пошёл
Осталось только mod_gawk для апача, ООП, lib_stdgawk++ - и вперёд, заменим гавком С, Жаву, Перл, Винни-Пуха и всех-всех-всех.
Если кому интересно, гляньте сюдаhttp://sourceforge.net/projects/runawk
Система модулей для awk-а (портабельная, для всех awk-ов)
плюс ~50 модулей-полезняшек,
включая волшебный обработчик опций power_getopt.awk.