The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Новая версия языка программирования GNU Awk 4.2.0"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Новая версия языка программирования GNU Awk 4.2.0"  +/
Сообщение от opennews on 20-Окт-17, 08:54 
После четырёх с половиной лет разработки доступен (https://www.mail-archive.com/info-gnu@gnu.org/msg02352....) новый значительный выпуск реализации языка программирования AWK от проекта GNU - Gawk 4.2.0 (http://www.gnu.org/software/gawk). AWK был разработан в 70-х годах прошлого века и не претерпел значительных изменений с середины 80-х годов, в которых был определен основной костяк языка, что позволило на протяжении последних десятилетий сохранить первозданную стабильность и простоту языка. Несмотря на преклонный возраст, AWK до сих пор активно используется администраторами для выполнения рутинных работ, связанных с парсингом различного рода текстовых файлов и генерации несложной результирующей статистики.

Ключевые изменения:

-  Пои запуске не в режиме POSIX переменные в ENVIRON теперь отражаются в окружение gawk и дочерних программ, запущенных через вызов system();

-  Увеличено качество псевдослучайных числе, выдаваемых функцией rand(). Порядок чисел в последовательности по-прежнему повторяем, поэтому rand() не подходит для криптографических нужд;

-  Улучшена работа режима вывода отформатированного кода программы. При указании опции "--pretty-print" AWK-программа теперь не запускается;

-  Добавлена возможность сборки с использованием  CMake, который теперь позиционируется в качестве альтернативного сборочного инструментария;

-  Добавлена настройка PROCINFO["NONFATAL"] при которой ошибки ввода/вывода  не приводят к завершению выполнения. По аналогии  PROCINFO["redirection", "NONFATAL"] действует для перенаправленных потоков;

-  Добавлена опция PROCINFO[input-file, "RETRY"], при установке которой в случае ошибки ввода/вывода предпринимается повторная попытка выполнения операции;

-  Нарушена бинарная совместимость для C API, Си-приложения связанные с gawk требуют пересборки;

-  Добавлена поддержка строго типизированных констант с регулярными выражениями, задаваемых в виде "@/.../".  Такие константы можно присвоить переменным и использовать справа от операторов "~" и "!~", а также в составе выражений "case";

-  Добавлена функция typeof() для определения типа переменной (array, regexp, string, number);
-  Прекращена поддержка старого механизма подключения расширений, основанного на применении функции "extension";
-  Прекращена поддержка платформы GNU/Linux на системах Alpha;
-  Прекращена поддержка операционной системы  MirBSD;
-  Возвращён в строй порт для DJGPP, для которого нашёлся сопровождающий;
-  Включена по умолчанию оптимизация кода выполняемых приложений, для отключения которой следует использовать опцию "-s/--no-optimize';
-  При наличии задействован механизм fwrite_unlocked, позволяющий на 7% - 18% поднять скорость вывода gawk '{ print }' для больших файлов;
-  Ускорены операции в режиме  IGNORECASE;
-  Использование отрицательных значений в битовых функциях теперь приводит к завершению работы с ошибкой;


-  В  mktime добавлен второй аргумент для включения преобразования времени в UTC вместо локального часового пояса;
-  Добавлен массив PROCINFO["argv"], в котором сохраняются все аргументы командной строки.

URL: https://www.mail-archive.com/info-gnu@gnu.org/msg02352....
Новость: http://www.opennet.dev/opennews/art.shtml?num=47420

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Новая версия языка программирования GNU Awk 4.2.0"  +2 +/
Сообщение от blzz on 20-Окт-17, 08:54 
>> Улучшена работа режима вывода отформатированного кода программы. При указании опции "--pretty-print" AWK-программа теперь не запускается;

улучшено на отличненько

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Новая версия языка программирования GNU Awk 4.2.0"  +7 +/
Сообщение от Аноним (??) on 20-Окт-17, 08:59 
Да, раньше было более чем странно, когда запуск фильтра для форматирования кода приводил к выполнению этого кода.
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

38. "Новая версия языка программирования GNU Awk 4.2.0"  –1 +/
Сообщение от Zarat (ok) on 21-Окт-17, 10:39 
Сам удивился, но как всегда корявый перевод из
https://www.mail-archive.com/info-gnu@gnu.org/msg02352....

The --pretty-print option no longer runs the program too.

Даже дословный был-бы лучше.
т.е. понимать:
- AWK-программа теперь не запускается;
+ теперь AWK-код не будет интерпретироваться (выполняться)

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Новая версия языка программирования GNU Awk 4.2.0"  –7 +/
Сообщение от Аноним (??) on 20-Окт-17, 09:05 
Недоперл?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Новая версия языка программирования GNU Awk 4.2.0"  +12 +/
Сообщение от bentall (ok) on 20-Окт-17, 09:14 
Прямой предок же. А так, когда нужно сделать что-то простое и достаточно-одноразовое с текстом — самое то.
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Новая версия языка программирования GNU Awk 4.2.0"  +1 +/
Сообщение от Anonymus on 20-Окт-17, 09:39 
А sed не проще, разве?
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

7. "Новая версия языка программирования GNU Awk 4.2.0"  +1 +/
Сообщение от Аноним (??) on 20-Окт-17, 10:06 
sed не годится, когда нужно что-нибудь посчитать, например. Но на perl такие вещи делаются, как правило, проще. awk может потребоваться для максимальной переносимости, благо он POSIX, но тогда все плюшки gawk идут лесом.
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

8. "Новая версия языка программирования GNU Awk 4.2.0"  +7 +/
Сообщение от angra (ok) on 20-Окт-17, 10:09 
По личному опыту, включающему в себя чтение скриптов и однострочников коллег, в подавляющем большинстве случаев awk используется для вытаскивания из потока нужных позиций(колонок), а sed для регексовой замены как в потоке так и напрямую в файлах. То есть они используются для разного и выбора как такового нет. При этом конечно можно каждым из них решить основную задачу другого, но неудобно.
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

20. "Новая версия языка программирования GNU Awk 4.2.0"  +/
Сообщение от Аноним (??) on 20-Окт-17, 13:26 
> в подавляющем большинстве случаев awk используется для вытаскивания из потока нужных позиций(колонок)

...неосиляторами cut(1).

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

22. "Новая версия языка программирования GNU Awk 4.2.0"  +/
Сообщение от angra (ok) on 20-Окт-17, 13:50 
А зачем осиливать значительно более убогий инструмент, который к тому же не способен справится с основной задачей во многих случаях? Я пробовал его использовать лет десять назад, довольно быстро пришел к выводу, что вместо экономии времени получил прямо противоположный результат.
Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

27. "Новая версия языка программирования GNU Awk 4.2.0"  +1 +/
Сообщение от Аноним (??) on 20-Окт-17, 14:42 
Было бы, что там осиливать, я б ещё понял вопрос "зачем"...
$ time sh -c 'for i in `seq 10000`; do cut -d: -f1 </etc/group >/dev/null; done'
sh -c 'for i in `seq 10000`; do cut -d: -f1 </etc/group >/dev/null; done'  0,06s user 0,59s system 16% cpu 3,856 total
$ time sh -c 'for i in `seq 10000`; do gawk -F: "{ print \$1 }" </etc/group >/dev/null; done'
sh -c   0,14s user 0,83s system 9% cpu 10,673 total

Кстати, раз уж на то пошло:
$ time sh -c 'for i in `seq 10000`; do mawk -F: "{ print \$1 }" </etc/group >/dev/null; done'
sh -c   0,05s user 0,63s system 15% cpu 4,301 total
$ time sh -c 'for i in `seq 10000`; do original-awk -F: "{ print \$1 }" </etc/group >/dev/null; done'                                                                  
sh -c   0,08s user 0,66s system 14% cpu 5,229 total

Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

29. "Новая версия языка программирования GNU Awk 4.2.0"  +/
Сообщение от Andrey Mitrofanov on 20-Окт-17, 17:26 
> Было бы, что там осиливать, я б ещё понял вопрос "зачем"...
>
$ time sh -c 'for i in `seq 10000`; do gawk -F: 
> "{ print \$1 }" </etc/group >/dev/null; done'
> sh -c   0,14s user 0,83s system 9% cpu 10,673 total

> Кстати, раз уж на то пошло:
>
$ time sh -c 'for i in `seq 10000`; do mawk -F: 
> "{ print \$1 }" </etc/group >/dev/null; done'
> sh -c   0,05s user 0,63s system 15% cpu 4,301 total

Вспоминание отдельного второго языка для того же самого истратит гораздо больше времени, чем "целые"  0,14s и нарушит душевное спокойствие. Особенно, если с первого раза промахнуться в -f/-F или -t/-d.  Так мысль "неосиляторов" более понятна?

Ответить | Правка | ^ к родителю #27 | Наверх | Cообщить модератору

30. "Новая версия языка программирования GNU Awk 4.2.0"  +/
Сообщение от Аноним (??) on 20-Окт-17, 17:41 
Ты упоролся? Какого ещё языка? Одна команду с парой опций — это у тебя язык? Блин, я, оказывается, сотни языков знаю!
И, кстати, каким образом ты 0,14 с насчитал?
Ответить | Правка | ^ к родителю #29 | Наверх | Cообщить модератору

36. "Новая версия языка программирования GNU Awk 4.2.0"  +/
Сообщение от angra (ok) on 21-Окт-17, 05:11 
Ну не языка, а синтаксиса команды. Принципиальной разницы нет, по существу Андрей сказал правильно. Если уже хорошо знаешь более продвинутый инструмент, то зачем запоминать еще и более убогий? И когда мне понадобится вытащить определенные поля из потока я на полном автомате напишу это на perl или awk, а не буду вспоминать какие там опции у cut и сможет ли он вообще это сделать.
Ответить | Правка | ^ к родителю #30 | Наверх | Cообщить модератору

40. "Новая версия языка программирования GNU Awk 4.2.0"  +/
Сообщение от Аноним (??) on 21-Окт-17, 13:44 
> Если уже хорошо знаешь более продвинутый инструмент, то зачем запоминать еще и более убогий?

Ты когда последний раз видел человека, который хорошо знает awk? Большинство кроме print в нём ничего не умеет и не использует.
Но аргумент имеет право на существование, да. Именно поэтому я и не учу awk: зачем он мне, когда есть perl? Кстати, не так давно понадобилось для пущей переносимости переписать perl-однострок (делающий всего лишь urlencode) на awk. В результате однострок превратился строк в 30 кода. И кому оно надо (было бы, если бы отдельные личности не юзали урезанные контейнеры, где нет даже perl)?

Ответить | Правка | ^ к родителю #36 | Наверх | Cообщить модератору

43. "Новая версия языка программирования GNU Awk 4.2.0"  +/
Сообщение от . on 21-Окт-17, 18:14 
Его не только в контейнерах нет - его нигде нет. Самому приносить надо.
А awk - формально в POSIX. И это причина нумбер раз.
Ответить | Правка | ^ к родителю #40 | Наверх | Cообщить модератору

45. "Новая версия языка программирования GNU Awk 4.2.0"  +/
Сообщение от angra (ok) on 21-Окт-17, 23:33 
> Ты когда последний раз видел человека, который хорошо знает awk? Большинство кроме print в нём ничего не умеет и не использует.

Поднимись выше по треду и прочитай, что я сказал про основное использование awk. Вдруг окажется, что практически то же самое. Заодно можешь обнаружить там комментарии от человека, который знает awk.

> Именно поэтому я и не учу awk: зачем он мне, когда есть perl?

Аналогично :)

Сэр, вы точно хотите продолжить сражение с ветрянными мельницами?

Ответить | Правка | ^ к родителю #40 | Наверх | Cообщить модератору

39. "Новая версия языка программирования GNU Awk 4.2.0"  –2 +/
Сообщение от Zarat (ok) on 21-Окт-17, 10:44 
> Какого ещё языка?

DSL cut-a

Ответить | Правка | ^ к родителю #30 | Наверх | Cообщить модератору

34. "Новая версия языка программирования GNU Awk 4.2.0"  +/
Сообщение от angra (ok) on 21-Окт-17, 04:56 
> Было бы, что там осиливать, я б ещё понял вопрос "зачем"...

Про "ниасиляторов" не я говорил. Я сказал о ненужности cut и его неспособности решить указанную задачу в ряде случаев(это будет тебе домашним заданием). А твои подсчеты времени вообще никого из практиков не интересуют.

Ответить | Правка | ^ к родителю #27 | Наверх | Cообщить модератору

41. "Новая версия языка программирования GNU Awk 4.2.0"  +/
Сообщение от Аноним (??) on 21-Окт-17, 13:54 
Я прекрасно знаю про "задачи", которые cut не может решить. А также знаю, что в 95% случаев такие задачи возникают в результате неправильного решения другой задачи. Парсить вывод команды, не предназначенный для парсинга, нельзя, потому что в итоге, пусть даже в каком-нибудь маргинальном случае, ты получишь совсем не то, чего ожидал. А то, что предназначено для парсинга, всегда имеет строго один разделитель и отлично обрабатывается cut.
Ответить | Правка | ^ к родителю #34 | Наверх | Cообщить модератору

44. "Новая версия языка программирования GNU Awk 4.2.0"  –2 +/
Сообщение от . on 21-Окт-17, 18:50 
Му-ха-ха :) Какой восторженный ***** :-) Ну погнали по пунктам:

>Я прекрасно знаю про "задачи", которые cut не может решить.

Нет, не знаешь. Впрочем, а вдруг ... ну - излагай топ 2 причины по которой cut приходится выковыривать из скриптов.

>А также знаю, что в 95% случаев такие задачи возникают в результате неправильного решения другой задачи.

НУ да - все не в ногу, и только ты ... :)

>Парсить вывод команды, не предназначенный для парсинга, нельзя, потому что в итоге, пусть даже в каком-нибудь маргинальном случае, ты получишь совсем не то, чего ожидал.

Когда ты окончишь школу и пойдёшь работать - тебя ожидает серьёзный культурологический шок! Прикинь - мир то вокруг не идеален! И даже мамкин борщ не вечен! :-)
>А то, что предназначено для парсинга, всегда имеет строго один разделитель и отлично обрабатывается cut.

Не знать HTML в 2017 %-o  ... Ты уже пятый год в пятом классе? Я угадал? :)

Ответить | Правка | ^ к родителю #41 | Наверх | Cообщить модератору

46. "Новая версия языка программирования GNU Awk 4.2.0"  –1 +/
Сообщение от Аноним (??) on 21-Окт-17, 23:56 
> ну - излагай топ 2 причины по которой cut приходится выковыривать из скриптов.

Для меня таких причин нет. Ты, видимо, зачем-то пытаешься разбирать "табличный" вывод какой-то хрени, где используется выравнивание пробелами (могу погадать, что это что-нибудь вроде ps, ls или даже top). Да, этого cut не умеет. Но этого делать в любом случае не следует. Вторую тебе? Ну не знаю, может быть, хочешь на выходе получить содержимое нескольких полей в произвольном порядке. Да, менять порядок cut не умеет тоже.

> Когда ты окончишь школу и пойдёшь работать - тебя ожидает серьёзный культурологический шок!

О, любимый аргумент местных недоучек пошёл в ход. Шок ожидает тебя, если угораздит попасть ко мне на собеседование.

> HTML

Ты HTML awk'ом разбираешь? Ну покажи, интересно поглядеть.

Ответить | Правка | ^ к родителю #44 | Наверх | Cообщить модератору

47. "Новая версия языка программирования GNU Awk 4.2.0"  +/
Сообщение от Nolan on 22-Окт-17, 02:29 
cut слишком беден, что-то аналогичного обычному awk '$4 == "sda"{ print $3 / 1024; exit }' /proc/partitions ты на нём не сделаешь. А запуск perl, для подобных вещей, слишком дорог.
Ответить | Правка | ^ к родителю #46 | Наверх | Cообщить модератору

48. "Новая версия языка программирования GNU Awk 4.2.0"  +/
Сообщение от Led (ok) on 22-Окт-17, 03:00 
> cut слишком беден, что-то аналогичного обычному awk '$4 == "sda"{ print $3
> / 1024; exit }' /proc/partitions ты на нём не сделаешь. А
> запуск perl, для подобных вещей, слишком дорог.

expr `grep -o '[[:digit:]]* sda$' /proc/partitions | cut -d' ' -f1` / 1024

Ответить | Правка | ^ к родителю #47 | Наверх | Cообщить модератору

51. "Новая версия языка программирования GNU Awk 4.2.0"  +/
Сообщение от Noland on 22-Окт-17, 11:49 
Это подтверждает мои слова - cut слишком беден, чтобы решить туже задачу требуется привлечение expr, greb и subshell, в результате вместо одного процесса awk порождается четыре (expr, ``, grep, cut), это помимо ужасной читаемости и масштабируемости, например, потребуется обработка других полей: awk '$4 == "sda"{ print $2":"$1":"$3 / 1024; exit }' /proc/partitions
Ответить | Правка | ^ к родителю #48 | Наверх | Cообщить модератору

50. "Новая версия языка программирования GNU Awk 4.2.0"  +/
Сообщение от Аноним (??) on 22-Окт-17, 11:41 
> что-то аналогичного обычному awk '$4 == "sda"{ print $3 / 1024; exit }' /proc/partitions ты на нём не сделаешь

Вот о чём я и говорил. Все эти пляски с awk — от неумения решать задачи по-человечески.

expr $(cat /sys/block/sda/size) / 2048

И даже cut не нужен.
Ответить | Правка | ^ к родителю #47 | Наверх | Cообщить модератору

52. "Новая версия языка программирования GNU Awk 4.2.0"  +1 +/
Сообщение от Noland on 22-Окт-17, 11:57 
>> что-то аналогичного обычному awk '$4 == "sda"{ print $3 / 1024; exit }' /proc/partitions ты на нём не сделаешь
> Вот о чём я и говорил. Все эти пляски с awk —
> от неумения решать задачи по-человечески.
>
expr $(cat /sys/block/sda/size) / 2048

> И даже cut не нужен.

Таже проблема, что и у предыдущего решения - порождение лишних процессов и отсутсвие маштабируемости, в данном случае три процесса вместо одного (expr, $(), cat), а если потребуется обработка нескольких полей. И это учитывая то, что "partitions" примитивный пример.

Ответить | Правка | ^ к родителю #50 | Наверх | Cообщить модератору

54. "Новая версия языка программирования GNU Awk 4.2.0"  –1 +/
Сообщение от Аноним (??) on 22-Окт-17, 12:23 
> Таже проблема, что и у предыдущего решения - порождение лишних процессов

Тебе процессов жалко? PID'ы исчерпать боишься, что ли? Тогда неправильно считаешь: одновременно работают не более двух дочерних процессов (сначала отрабатывает сабшелл с cat, после этого запускается expr). А если ты за скорость радеешь, то можешь проверить и убедиться, что моё решение работает быстрее твоего.
Кстати, в реальном скрипте было бы не три, а два дочерних процесса, потому что вместо expr было бы $(( )) (цель ведь не вывести значение, а как-то использовать его, я полагаю?).

> И это учитывая то, что "partitions" примитивный пример.

Ну так приведи не примитивный.

Ответить | Правка | ^ к родителю #52 | Наверх | Cообщить модератору

56. "Новая версия языка программирования GNU Awk 4.2.0"  +/
Сообщение от Noland on 22-Окт-17, 14:20 
Считаю я правильно, а именно сколько процессов порождалось оболочкой, ещё точнее сколько "clone/fork" и обращений к дисковой подсистеме было совершено.   В данном случае на каждый вызов приходится ворох stat-ов (для поиска в PATH, чем он длиннее, тем их больше), clone/fork и exec. Если использовать абсолютные пути, то время немного сократится. Всё это легко увидеть если воспользоваться strace или truss.
Разумеется варианта с "cat", для обработки файла содержащего одно поле, будет быстрее.
Но я напомню, что речь шла именно о замене awk на cut. Поэтому, используя только cut требуется найти минимальный и максимальный vlan id на заданном интерфейсе, на awk можно составить: awk -v nif="lan0" 'BEGIN {min = -1; max = -1} $5 == nif {if (min == -1 || min > $3) min = $3; if (max == -1 || max < $3) max = $3} END {print min":"max}' /proc/net/vlan/config
Это первое, что вспомнил.
Ответить | Правка | ^ к родителю #54 | Наверх | Cообщить модератору

58. "Новая версия языка программирования GNU Awk 4.2.0"  –1 +/
Сообщение от Аноним (??) on 22-Окт-17, 15:38 
> напомню, что речь шла именно о замене awk на cut

Нет, речь шла о замене awk '{ print $N }' на cut. Твой пример с awk отличается, так что не обессудь, и моё решение оказалось другим.
Видимо, надо пояснить мою позицию, изложенную чуть выше по треду. Использование awk '{ print $N }' либо может быть без проблем заменено на cut, либо не может быть заменено из-за того, что происходит обработка текста, предназначенного не для парсинга, а исключительно для чтения человеком. Во втором случае лучше поискать решение, не требующее разбора этого текста (что и было замечательно проиллюстрировано на примере /proc/partitions vs. /sys/block). Не для того, чтобы не использовать awk, а для того, чтобы в какой-то момент не получить граблями по лбу, потому что в тексте окажется что-то не то, что ожидалось.
Один реальный пример: недавно пришлось чинить скрипт, в котором сломалось извлечение идентификатора ключа gpg. Из-за того, что в новой версии gnupg формат вывода --list-keys немножко изменился. Если бы автор скрипта вместо разбора человекочитаемого выхлопа gpg использовал специально предназначенную для парсинга опцию --with-colons, проблемы бы не возникло.
> используя только cut требуется найти минимальный и максимальный vlan id на заданном интерфейсе

"Используя только cut" — это смешная шутка, да. Спасибо, что не только true.
Извини, нет у меня в пределах досягаемости ни одной системы с настроенными vlan'ами.

Ответить | Правка | ^ к родителю #56 | Наверх | Cообщить модератору

60. "Новая версия языка программирования GNU Awk 4.2.0"  –1 +/
Сообщение от Noland on 22-Окт-17, 18:35 
Спору нет, cut удобнее и эффективнее, если речь идёт только о выводе полей при условии однородных разделителей.
К сожалению не у всех утилит есть режим вывод предназначенный для машинного разбора, а тем более возможность запросить некоторые значения по отдельности, как например сделано в blkid. Но даже наличие этих опций не убережёт от нежелания читать man.
Ответить | Правка | ^ к родителю #58 | Наверх | Cообщить модератору

53. "Новая версия языка программирования GNU Awk 4.2.0"  +/
Сообщение от Noland on 22-Окт-17, 12:12 
Если было бы предложено:
read size < /sys/block/sda/size; echo $(($size / 2048))
То, да, для данного случая (нужно работать с одним полем) оно более выигрышно.
Ответить | Правка | ^ к родителю #50 | Наверх | Cообщить модератору

55. "Новая версия языка программирования GNU Awk 4.2.0"  +/
Сообщение от Аноним (??) on 22-Окт-17, 12:27 
> Если было бы предложено:
> read size < /sys/block/sda/size; echo $(($size / 2048))
> То, да, для данного случая (нужно работать с одним полем) оно более
> выигрышно.

Да. Но при этом менее читаемо (хотя всё равно лучше, чем на awk).

Ответить | Правка | ^ к родителю #53 | Наверх | Cообщить модератору

57. "Новая версия языка программирования GNU Awk 4.2.0"  +/
Сообщение от Noland on 22-Окт-17, 14:27 
Вопрос читаемости в данном случае очень спорный, а прирост производительности, хоть и незначительный, налицо.
Ответить | Правка | ^ к родителю #55 | Наверх | Cообщить модератору

59. "Новая версия языка программирования GNU Awk 4.2.0"  +/
Сообщение от Аноним (??) on 22-Окт-17, 15:42 
Спорный или нет, я ориентировался прежде всего на наилучшую читаемость. Мы ж тут не олимпиадные задачки решаем, да и тезис Кнута про корень всех зол никто не отменял.
Ответить | Правка | ^ к родителю #57 | Наверх | Cообщить модератору

28. "Новая версия языка программирования GNU Awk 4.2.0"  +2 +/
Сообщение от iCat (ok) on 20-Окт-17, 15:39 
>А зачем осиливать значительно более убогий инструмент...

Ты картинки смотришь Photoshop, а кинофильмы - AdobePremier?

Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

35. "Новая версия языка программирования GNU Awk 4.2.0"  –2 +/
Сообщение от angra (ok) on 21-Окт-17, 05:03 
Ты не понимаешь разницу между просмотром и редактированием? Нет, я не редактирую фотографии в paint при наличии photoshop или gimp.
Ответить | Правка | ^ к родителю #28 | Наверх | Cообщить модератору

33. "Новая версия языка программирования GNU Awk 4.2.0"  –4 +/
Сообщение от Аноним (??) on 21-Окт-17, 01:51 
Сразу видно что cut ты сам ни разу не использовал, иначе ты бы знал почему awk проще cut
Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

37. "Новая версия языка программирования GNU Awk 4.2.0"  –2 +/
Сообщение от Поликарпыч on 21-Окт-17, 10:12 
Ты и с блокнотиком и Карела шиком логи проверяй.. Это для настоящих спецов.
Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

10. "Новая версия языка программирования GNU Awk 4.2.0"  +1 +/
Сообщение от Andrey Mitrofanov on 20-Окт-17, 11:09 
> А sed не проще, разве?

Разговор не про "проще" [или даже раньше], а про оказал влияние на создателя нового языка. Лари писал, что awk участвовал при зачатии.

It combines (in  the  author's  opinion,  anyway)
some  of the best features of C, sed, awk, and sh,

И да, sed проще --> в смысле примитивнее и ограниченнее.

Обычно я ранжирую [строко-ориентированные под-]языки, используемые _в shell_, как cat <= grep <= sed <= awk. А перла я В) не осилил.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

17. "Новая версия языка программирования GNU Awk 4.2.0"  –1 +/
Сообщение от VINRARUS (ok) on 20-Окт-17, 13:12 
Ну sed быстрее чем awk, а в последнем релизе даже перегнал сам себя в 80 раз.
http://forum.motofan.ru/index.php?s=&showtopic=162200&view=f...

Проблема в том шо некоторым недопрограмистам очень сложно освоить ключ -е, от чего они пишут несколько sed в конвеере.

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

21. "Новая версия языка программирования GNU Awk 4.2.0"  –1 +/
Сообщение от Аноним (??) on 20-Окт-17, 13:31 
> Проблема в том шо некоторым недопрограмистам очень сложно освоить ключ -е, от
> чего они пишут несколько sed в конвеере.

А что, они и ";" не осилили?

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

25. "Новая версия языка программирования GNU Awk 4.2.0"  +1 +/
Сообщение от Аноним (??) on 20-Окт-17, 14:26 
Хотя на самом деле большинство в sed не осиливает ничего кроме s///. В результате городят жуткие конвейеры из cat|grep|head|tail|sed.
Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

24. "Новая версия языка программирования GNU Awk 4.2.0"  +1 +/
Сообщение от Andrey Mitrofanov on 20-Окт-17, 14:25 
> Ну sed быстрее чем awk, а в последнем релизе даже перегнал сам
> себя в 80 раз.
> http://forum.motofan.ru/index.php?s=&showtopic=162200&view=f...
> Проблема в том шо некоторым недопрограмистам очень сложно освоить ключ -е, от
> чего они пишут несколько sed в конвеере.

Бывают попромисты, не могущие в ';' ??  Ну, питонисты должны...[--8<--]

PG_OPTS=$(2>/dev/null <"${0%/*}/.plugins.conf" sed -n 's/^ *psql_opts *= *//;T;p;q')

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

6. "Новая версия языка программирования GNU Awk 4.2.0"  +/
Сообщение от еарапр on 20-Окт-17, 09:49 
Ну, как бы, лисп же лучше.
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

9. "Новая версия языка программирования GNU Awk 4.2.0"  +1 +/
Сообщение от Аноним (??) on 20-Окт-17, 10:22 
> Прекращена поддержка платформы GNU/Linux на системах Alpha;

Но... Оно же на Си...

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

11. "Новая версия языка программирования GNU Awk 4.2.0"  +/
Сообщение от Iaaa (ok) on 20-Окт-17, 11:42 
Скорее не нашли где потестить, и забили.
Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

13. "Новая версия языка программирования GNU Awk 4.2.0"  +/
Сообщение от alex (??) on 20-Окт-17, 11:49 
скорее всего просто не на чем тестить
а собрать самому из исходников никто не запрещает
Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

15. "Новая версия языка программирования GNU Awk 4.2.0"  +/
Сообщение от pripolz on 20-Окт-17, 12:08 
> скорее всего просто не на чем тестить

а qemu-system-alpha...

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

23. "Новая версия языка программирования GNU Awk 4.2.0"  +/
Сообщение от Аноним (??) on 20-Окт-17, 14:24 
> qemu-system-alpha

Зачем так сложно, если есть qemu-alpha?
Скорее это просто оказалось никому не надо.

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

12. "Новая версия языка программирования GNU Awk 4.2.0"  +/
Сообщение от _bob (ok) on 20-Окт-17, 11:44 
http://www.newlisp.org/ -- довольно неплох.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

32. "Новая версия языка программирования GNU Awk 4.2.0"  –2 +/
Сообщение от freehck email(ok) on 20-Окт-17, 23:50 
> Нарушена бинарная совместимость для C API, Си-приложения связанные с gawk требуют пересборки;

Простите, может быть я наивен, но что надо сделать с библиотекой, чтобы сломать двоичную совместимость?

Какие-нибудь функции удалили, что ли? Так если они не используются, то вроде бы не потребуется пересборки... Вот не понял.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

42. "Новая версия языка программирования GNU Awk 4.2.0"  +/
Сообщение от Аноним (??) on 21-Окт-17, 14:01 
> Простите, может быть я наивен, но что надо сделать с библиотекой, чтобы
> сломать двоичную совместимость?

Например заменить какую-нибудь функцию макросом (или inline-функцией).

> Какие-нибудь функции удалили, что ли? Так если они не используются, то вроде бы не потребуется пересборки...

А если используются?

Ответить | Правка | ^ к родителю #32 | Наверх | Cообщить модератору

49. "Новая версия языка программирования GNU Awk 4.2.0"  +3 +/
Сообщение от angra (ok) on 22-Окт-17, 11:20 
Если удалить функции, то изменится еще и API. Наверное самый простой способ поломать ABI без API это изменить что-либо из экспортируемых типов или структур.
Ответить | Правка | ^ к родителю #32 | Наверх | Cообщить модератору

63. "Новая версия языка программирования GNU Awk 4.2.0"  +/
Сообщение от freehck email(ok) on 24-Окт-17, 11:52 
> Наверное самый простой способ поломать ABI без API это изменить
> что-либо из экспортируемых типов или структур.

Спасибо за исчерпывающий ответ!

Ответить | Правка | ^ к родителю #49 | Наверх | Cообщить модератору

62. "Новая версия языка программирования GNU Awk 4.2.0"  +/
Сообщение от vantoo (ok) on 23-Окт-17, 13:39 
В свое время перечитал от корки до корки "Gawk: Effective AWK Programming" и не пожалел. Использую его где только это может пригодится.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру