Почему несколько дистрибутивов Linux поставляют mawk по умолчанию, даже если он не POSIX-совместимый? - PullRequest
1 голос
/ 27 марта 2019

mawk не POSIX-совместимый, потому что он не поддерживает PREIX ERE.

Если быть точным, он не поддерживает именованные классы символов, такие как [[: space:]] в своих ERE, которые являются частью ERE POSIX.

Как GNU awk, так и BusyBox awk, похоже, не имеют этой проблемы.

Я сталкивался с этой проблемой несколько раз в моих собственных сценариях awk, потому что мне действительно нравится [[: space:]] для сопоставления htabs, а также пробелов и потенциально других пробелов, специфичных для локали, с одним выражением класса символов.

Поэтому мне интересно, почему несколько дистрибутивов Linux решили поставлять не-POSIX-совместимую реализацию такой выдающейся утилиты по умолчанию, хотя POSIX-совместимые также доступны?

1 Ответ

2 голосов
/ 27 марта 2019

Глядя на http://archive.debian.org, кажется, что:

  • mawk появился в 1997 году как 1.3.3
  • busybox появился примерно в 2002 году как 0.60.2
  • busybox наконец достиг версии 1 (1.1.3) в 2006 году

Я бы предположил, что mawk по-прежнему используется по умолчанию по одной основной причине:

  1. инерция. Он долгое время был упакован по умолчанию.

Обратите внимание, что mawk является POSIX-совместимым (в некотором смысле). С его справочной страницы:

mawk соответствует определению языка AWK в Posix 1003.2 (черновик 11.3)

К сожалению, это не та версия, которая вас волнует ...

Учитывая, как трудно даже обновить свою версию:

(оба еще открыты, последний с 2009 года !!), представьте, как трудно было бы заставить debian полностью заменить его чем-то другим!

Я подозреваю, что есть также:

  1. действительно легко установить gawk (или предпочитаемую вами реализацию)
...