LINUX.ORG.RU

GNU grep 2.9

 ,


0

1

21 июня Jim Meyering оповестил сообщество о выходе новой версии программы GNU grep 2.9. Изменения заключают в себе исправление ошибок, прежде всего, это существенное увеличение производительности при работе с диапазонами многобайтовых символов (типа '[áéíóú]'). Спасибо Paolo Bonzini за эту работу!

Другие исправления:

Расширенные регулярные выражения типа '(^| )*( |$)' теперь не разносят кучу (ошибка появилась в grep-2.6).

grep -P больше не вылетает, когда достигается предел PCRE при поиске с возвратом. Ранее например, echo aaaaaaaaaaaaaab |grep -P '((a+)*)+$' прекращала работу аварийно. Теперь нет. Теперь выводится сообщение о проблеме и происходит корректное завершение работы с кодом 2.

Устранены проблемы при работе с символами в диапазоне 0x80..0xff, существовавшие в некоторых нетривиальных локалях (например, ru_RU.KOI-8). Ранее команда echo c | grep '[c]' при 'c' в указанном диапазоне давала некорректный результат (ошибка появилась в версии grep-2.6).

Исходные коды доступны по ссылке: http://ftp.gnu.org/gnu/grep/grep-2.9.tar.xz

>>> Подробности на Саванне

★★★★★

Проверено: anonymous_incognito ()
Последнее исправление: Deleted (всего исправлений: 2)

Что это делает в мини-новостях?

сообщение о проблемы

s/ы/е/

grep -P '((a+)*)+$'

с кодом 2.

А в чём ошибка этой регулярки, что код возврата 2, а не 1? Насколько я распарсил, она должна удовлетворять любому количеству (или 0) букв 'a' в конце строки, например, '123aaaaaa'.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

Нет.

(a+)* — это любое (даже нулевое) количество букв a, а дальше это повторяется ненулевое число раз.

anarquista ★★★★★
() автор топика
Ответ на: комментарий от gentoo_root

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

anarquista ★★★★★
() автор топика
Ответ на: комментарий от gentoo_root

Вообще, конструкции (.*)+ использовать не рекомендуется. Они могут приводить к экспоненциальному росту сложности.

anarquista ★★★★★
() автор топика
Ответ на: комментарий от gentoo_root

Нет. Само выражение совершенно корректное. Команда echo aaaaaaaaaaab |grep -P '((a+)*)+$' сработает отлично. Но с увеличение числа повторений…

anarquista ★★★★★
() автор топика

> при работе с диапазонами многобайтовых символов (типа '[áéíóú]')

и типа «абвгд»

Nxx ★★★★★
()

Очень хорошая новость. Часто пользуюсь этой командой.

kristall ★★
()
Ответ на: комментарий от tensai_cirno

>Ну оче важная новость, ага.

Уж важнее, чем новый исполнительный директор gnome foundation. grep'ом все пользуются, а какой там директор у гномов, мне лично всё равно.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

>grep'ом все пользуются, а какой там директор у гномов, мне лично всё равно.

ППКС. Важно какой софт, а кто его двигает - дело десятое. Особенно - кто двигает(но не пишет)

Pinkbyte ★★★★★
()
Ответ на: комментарий от tensai_cirno

>Ну оче важная новость, ага.

Сама программа grep намного полезнее и важнее для многих людей, чем, например, лично ты.

anonymous
()
Ответ на: комментарий от darkshvein

типа трансгуманистов?

Если бы, скорее сосем наоборот, типа ультрамизантропов.

baverman ★★★
()
Ответ на: комментарий от tensai_cirno

Зря вы так считаете. Очень полезная функция, красноглазие тут ни причем, оно наоборот время экономит.

anonymous
()

Ладно, у меня всё равно 2.5, так что не буду обновляться.

(да, все исправления в тех местах, которые я не трогаю)

Xenius ★★★★★
()
Ответ на: комментарий от gentoo_root

Два чаю, сиятельный дон.

Мне тоже греп каждый день нужен, а гномом уже и не пользуюсь.

Nicholass ★★★
()
Ответ на: комментарий от anonymous

При чем тут полезность? Это на полноценную новость никак не тянет, а в гнутом грепе минусов хватает. Грепы давно делятся на две части, те которые POSIX-compilant, и GNU.

Половины ключей нет в стандарте и в итоге получаем непереносимость. И отсюда так же вылезает зоопарк веселых багов.

tensai_cirno ★★★★★
()
Ответ на: комментарий от gentoo_root

Мини новости вообще надо отменить. Их ввели, чтобы оправдать некачественную работу подтверждателей. Но получилось как с ЕГЭ.

Quasar ★★★★★
()
Ответ на: комментарий от tensai_cirno

То есть в GNU grep нет поддержки POSIX как таковой?

Quasar ★★★★★
()
Ответ на: комментарий от Quasar

> Мини новости вообще надо отменить.

Да ладно, появился отличный повод для срачей - «А что это делает в новостях/мини-новостях?»

iMp ★★★
()
Ответ на: комментарий от tensai_cirno

> Красноглазие головного мозга.

А как-же Friendship is a magic?

iMp ★★★
()
Ответ на: комментарий от tensai_cirno

> Ну оче важная новость, ага.

Если кто-то не знает об основных инструментах linux, это ещё не значит, что новость не важная. Linux не ограничивается убунтой, важные новости не ограничиваются обсуждением мечтаний Марка о будущем.

bloodredfrog ★★
()

наконец-то. теперь можно в консоль.

AVL2 ★★★★★
()
Ответ на: комментарий от Eddy_Em

coreutils обычно не делится на отдельные утилиты. обновляется пакет целиком. даже если изменения коснулись лишь некоторых программ.

grep в состав coreutils не входит. Это отдельная самостоятельная программа, как и, например, sed.

Я стараюсь писать сюда об обновлениях coretutils, всякий раз, как они выходят. Можете посмотреть в новостях про GNU.

anarquista ★★★★★
() автор топика

> в некоторых нетривиальных локалях (например, ru_RU.KOI-8)

Надо же было обозвать кои8 нетревиальной. Фу!

anonymous
()

Решил проверить, запускаю echo aaaaaaaaaaaaaab |grep -P '((a+)*)+$' - вижу grep: exceeded PCRE's backtracking limit, код ошибки - 2. grep то уже обновился.

loz ★★★★★
()
Ответ на: комментарий от loz

Это какой дистрибутив такой шустрый? В слоуарче еще ничего не обновлялось.

anarquista ★★★★★
() автор топика

Paolo Bonzini

Ого, смоллток!

buddhist ★★★★★
()

Слишком много зависимостей. Не буду обновляться.

AVL2 ★★★★★
()
Ответ на: комментарий от gentoo_root

Ты ещё на опеннет не заходил. Каждый день, кроме выходных, перевод статьи блога Мрака Шаттлврота.

ZenitharChampion ★★★★★
()

Только закончил 2.8 собирать!...

Alve ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.