<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Новая версия языка программирования GNU Awk 4.2.0</title>
    <link>https://www.solaris.opennet.ru/openforum/vsluhforumID3/112548.html</link>
    <description>После четырёх с половиной лет разработки доступен (https://www.mail-archive.com/info-gnu&#064;gnu.org/msg02352.html) новый значительный выпуск реализации языка программирования AWK от проекта GNU - Gawk 4.2.0 (http://www.gnu.org/software/gawk). AWK был разработан в 70-х годах прошлого века и не претерпел значительных изменений с середины 80-х годов, в которых был определен основной костяк языка, что позволило на протяжении последних десятилетий сохранить первозданную стабильность и простоту языка. Несмотря на преклонный возраст, AWK до сих пор активно используется администраторами для выполнения рутинных работ, связанных с парсингом различного рода текстовых файлов и генерации несложной результирующей статистики.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Ключевые изменения:&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-  Пои запуске не в режиме POSIX переменные в ENVIRON теперь отражаются в окружение gawk и дочерних программ, запущенных через вызов system();&lt;br&gt;&lt;br&gt;-  Увеличено качество псевдослучайных числе, выдаваемых функцией rand(). Порядок чисел в последовательности по-прежнему повторяе</description>

<item>
    <title>Новая версия языка программирования GNU Awk 4.2.0 (freehck)</title>
    <link>https://www.solaris.opennet.ru/openforum/vsluhforumID3/112548.html#63</link>
    <pubDate>Tue, 24 Oct 2017 08:52:26 GMT</pubDate>
    <description>&amp;gt; Наверное самый простой способ поломать ABI без API это изменить&lt;br&gt;&amp;gt; что-либо из экспортируемых типов или структур.&lt;br&gt;&lt;br&gt;Спасибо за исчерпывающий ответ!&lt;br&gt;</description>
</item>

<item>
    <title>Новая версия языка программирования GNU Awk 4.2.0 (vantoo)</title>
    <link>https://www.solaris.opennet.ru/openforum/vsluhforumID3/112548.html#62</link>
    <pubDate>Mon, 23 Oct 2017 10:39:21 GMT</pubDate>
    <description>В свое время перечитал от корки до корки &quot;Gawk: Effective AWK Programming&quot; и не пожалел. Использую его где только это может пригодится. &lt;br&gt;</description>
</item>

<item>
    <title>Новая версия языка программирования GNU Awk 4.2.0 (Noland)</title>
    <link>https://www.solaris.opennet.ru/openforum/vsluhforumID3/112548.html#60</link>
    <pubDate>Sun, 22 Oct 2017 15:35:12 GMT</pubDate>
    <description>Спору нет, cut удобнее и эффективнее, если речь идёт только о выводе полей при условии однородных разделителей.&lt;br&gt;К сожалению не у всех утилит есть режим вывод предназначенный для машинного разбора, а тем более возможность запросить некоторые значения по отдельности, как например сделано в blkid. Но даже наличие этих опций не убережёт от нежелания читать man.&lt;br&gt;</description>
</item>

<item>
    <title>Новая версия языка программирования GNU Awk 4.2.0 (Аноним)</title>
    <link>https://www.solaris.opennet.ru/openforum/vsluhforumID3/112548.html#59</link>
    <pubDate>Sun, 22 Oct 2017 12:42:02 GMT</pubDate>
    <description>Спорный или нет, я ориентировался прежде всего на наилучшую читаемость. Мы ж тут не олимпиадные задачки решаем, да и тезис Кнута про корень всех зол никто не отменял.&lt;br&gt;</description>
</item>

<item>
    <title>Новая версия языка программирования GNU Awk 4.2.0 (Аноним)</title>
    <link>https://www.solaris.opennet.ru/openforum/vsluhforumID3/112548.html#58</link>
    <pubDate>Sun, 22 Oct 2017 12:38:27 GMT</pubDate>
    <description>&amp;gt; напомню, что речь шла именно о замене awk на cut&lt;br&gt;&lt;br&gt;Нет, речь шла о замене awk &apos;&#123; print $N &#125;&apos; на cut. Твой пример с awk отличается, так что не обессудь, и моё решение оказалось другим.&lt;br&gt;Видимо, надо пояснить мою позицию, изложенную чуть выше по треду. Использование awk &apos;&#123; print $N &#125;&apos; либо может быть без проблем заменено на cut, либо не может быть заменено из-за того, что происходит обработка текста, предназначенного не для парсинга, а исключительно для чтения человеком. Во втором случае лучше поискать решение, не требующее разбора этого текста (что и было замечательно проиллюстрировано на примере /proc/partitions vs. /sys/block). Не для того, чтобы не использовать awk, а для того, чтобы в какой-то момент не получить граблями по лбу, потому что в тексте окажется что-то не то, что ожидалось.&lt;br&gt;Один реальный пример: недавно пришлось чинить скрипт, в котором сломалось извлечение идентификатора ключа gpg. Из-за того, что в новой версии gnupg формат вывода --list-keys немножко изменился. Если бы автор скрипта вмест</description>
</item>

<item>
    <title>Новая версия языка программирования GNU Awk 4.2.0 (Noland)</title>
    <link>https://www.solaris.opennet.ru/openforum/vsluhforumID3/112548.html#57</link>
    <pubDate>Sun, 22 Oct 2017 11:27:45 GMT</pubDate>
    <description>Вопрос читаемости в данном случае очень спорный, а прирост производительности, хоть и незначительный, налицо.&lt;br&gt;</description>
</item>

<item>
    <title>Новая версия языка программирования GNU Awk 4.2.0 (Noland)</title>
    <link>https://www.solaris.opennet.ru/openforum/vsluhforumID3/112548.html#56</link>
    <pubDate>Sun, 22 Oct 2017 11:20:54 GMT</pubDate>
    <description>Считаю я правильно, а именно сколько процессов порождалось оболочкой, ещё точнее сколько &quot;clone/fork&quot; и обращений к дисковой подсистеме было совершено.   В данном случае на каждый вызов приходится ворох stat-ов (для поиска в PATH, чем он длиннее, тем их больше), clone/fork и exec. Если использовать абсолютные пути, то время немного сократится. Всё это легко увидеть если воспользоваться strace или truss.&lt;br&gt;Разумеется варианта с &quot;cat&quot;, для обработки файла содержащего одно поле, будет быстрее.&lt;br&gt;Но я напомню, что речь шла именно о замене awk на cut. Поэтому, используя только cut требуется найти минимальный и максимальный vlan id на заданном интерфейсе, на awk можно составить: awk -v nif=&quot;lan0&quot; &apos;BEGIN &#123;min = -1; max = -1&#125; $5 == nif &#123;if (min == -1 &amp;#124;&amp;#124; min &amp;gt; $3) min = $3; if (max == -1 &amp;#124;&amp;#124; max &amp;lt; $3) max = $3&#125; END &#123;print min&quot;:&quot;max&#125;&apos; /proc/net/vlan/config&lt;br&gt;Это первое, что вспомнил.&lt;br&gt;</description>
</item>

<item>
    <title>Новая версия языка программирования GNU Awk 4.2.0 (Аноним)</title>
    <link>https://www.solaris.opennet.ru/openforum/vsluhforumID3/112548.html#55</link>
    <pubDate>Sun, 22 Oct 2017 09:27:57 GMT</pubDate>
    <description>&amp;gt; Если было бы предложено: &lt;br&gt;&amp;gt; read size &amp;lt; /sys/block/sda/size; echo $(($size / 2048)) &lt;br&gt;&amp;gt; То, да, для данного случая (нужно работать с одним полем) оно более &lt;br&gt;&amp;gt; выигрышно.&lt;br&gt;&lt;br&gt;Да. Но при этом менее читаемо (хотя всё равно лучше, чем на awk).&lt;br&gt;</description>
</item>

<item>
    <title>Новая версия языка программирования GNU Awk 4.2.0 (Аноним)</title>
    <link>https://www.solaris.opennet.ru/openforum/vsluhforumID3/112548.html#54</link>
    <pubDate>Sun, 22 Oct 2017 09:23:40 GMT</pubDate>
    <description>&amp;gt; Таже проблема, что и у предыдущего решения - порождение лишних процессов&lt;br&gt;&lt;br&gt;Тебе процессов жалко? PID&apos;ы исчерпать боишься, что ли? Тогда неправильно считаешь: одновременно работают не более двух дочерних процессов (сначала отрабатывает сабшелл с cat, после этого запускается expr). А если ты за скорость радеешь, то можешь проверить и убедиться, что моё решение работает быстрее твоего.&lt;br&gt;Кстати, в реальном скрипте было бы не три, а два дочерних процесса, потому что вместо expr было бы $(( )) (цель ведь не вывести значение, а как-то использовать его, я полагаю?).&lt;br&gt;&lt;br&gt;&amp;gt; И это учитывая то, что &quot;partitions&quot; примитивный пример.&lt;br&gt;&lt;br&gt;Ну так приведи не примитивный.&lt;br&gt;</description>
</item>

</channel>
</rss>
