Грепал грека грепом репо, види грека в репе баг…
Грепал грека грепом репо, види грека в репе баг…
А почему этот DFA сразу в glibc не засунуть, если он быстрый?
grep '\t' — почему не работает? В чём смысл?
(какой же unix отстой)
Там и улучшена производительность, и баги какие-то поправлены (в том числе несколько, добавленных в версии 2.19).
<div class="info">много текста и других тегов</div>выдрать "много текста и других тегов". Казалось бы все просто (вот как щас помню)
grep 'info">*</div>'но не прокатывает.
А вот
grep '">*</div>'выдает
<div class="clear"></div>Я погуглил и пока не понял почему :\
С одной стороны, вроде как там много действительно интересных идей реализовано, чтобы работало быстро.
А с другой, ну нельзя же так. Если считать, что это одна из важнейших программ в unix-like окружении, как в выпушенных стабильных версия могут появляться вот такие ошибки:
$ echo aa | grep -E 'a(b$|c$)'
aa
Кто-то скажет, мол, не надо сидеть на Arch. Не уверен. Это будет лишь означать, что у вас не работает что-то другое. Ведь нет же какой-то действительно стабильной ветки?
Всё больше склоняюсь к тому, что GNU Grep просто нельзя использовать, да и не использует его никто. UNIX-way остался в 80-х. Для пользовательского поиска файлов по содержимому используют специально предназначенные для этого системы; для чего-то другого — написанные профессионалами реализации регулярных выражений на всяких там Java.
grep и командный интерфейс сегодня это удел дрочеров и маргиналов :-(((
takes up two or more bytes in a multibyte encoding.
Similarly, the patterns '\<', '\>', '\b', and '\B' no longer
mishandle word-boundary matches in multibyte locales.
[bug present since "the beginning"]
Неужели это починили, то что мне нужно, и теперь это будет работать с русскими словами???
Правда, в юникодных локалях всё стало еще хуже :-( падать стало реже, но производительность упала.
GNU Grep 2.19
А тот баг, что досаждал мне, всё висит и висит… :(
grep 2.15-1
$ grep --version | sed 1q
grep (GNU grep) 2.14.56-1e3d
што
savannah.gnu.org
Означает ли это, что GNU и grep нужно удалить, откуда только можно? запретить использование GNU в школах?
$ echo 'глядите на него' | sed -n '/\<гляд/p'
глядите на него
$ echo 'hello world' | grep '\<world'
hello world
49090
real 0m0.102s
user 0m0.064s
sys 0m0.039s
$ time grep -c '192\.168\.240\.18' access.log
49094
real 0m0.409s
user 0m0.362s
sys 0m0.044s
$ time grep -Fc 192.168.240.18 access.log
49109
real 0m0.593s
user 0m0.561s
sys 0m0.031s
Почему с фиксированными строками в несколько раз дольше?!?!
grep -Rl 'content' *
Развитие не остановить!
Багофиксы:
1. grep -i теперь правильно выводит многобайтовый символы, даже если большая и маленькая буква различной длины (например, турецкая «и-с-точкой»);
2. --include и --exclude снова можно совмещать.
"grep --include='.[ch]' --exclude='system.h' PATTERN " читает все *.[ch], кроме system.h (наверное, это удобно для всяких вимеров, которые не осилили ни нормальных языков, ни нормальных сред разработки)
Нововведения:
grep без опции -z по умолчанию считает разреженные файлы бинарными, если удается определить, что файл действительно разреженный.
Увидѣл новую версiю GNU grep 2.12,
как в головѣ сразу закрутилось продолженiе 85.06
parted 3.1 и grep 2.11
GNU развивается!
that of other tools в новой версии, то это относится к восьмибитным кодировкам.
Раньше dfa вызывал функцию strcoll, и происходило смешение больших и маленьких букв. Если же использование dfa было невозможным (ссылки назад в регвыре), то работало по-другому. Теперь эта путаница устранена.
gnu.org
Улучшена обработка символов в диапазоне 0x80…0xff во многих локалях (напримерб printf '\xff\n'|grep "$(printf '[\xff]')" || echo FAIL), исправлена ошибка с прекращением работы при некоторых проблемах с памятью.
В Арче пока нет, слоупочат пока…
Ура! Вышла новая версия GNU grep — замечательной программы для поиска строк в файле по регулярным выражениям — 2.8. Нашел на Улучшена обработка символов в диапазоне 0x80…0xff во многих локалях (напримерб printf '\xff\n'|grep "$(printf '[\xff]')" || echo FAIL), исправлена ошибка с прекращением работы при некоторых проблемах с памятью.
В Арче пока нет, слоупочат пока…
./configure --prefix=/usr --bindir=/bin --with-included-regex
$ echo ПРИВЕТ | LANG=C grep '[а-я]'
grep: Invalid collation character
$ echo ПРИВЕТ | LANG=ru_RU.UTF-8 grep '[а-я]'
ПРИВЕТ
GNU grep 2.5.3, Debian GNU/Linux Lenny
$ echo ПРИВЕТ | LANG=C grep '[а-я]'
ПРИВЕТ
$ echo ПРИВЕТ | LANG=en_US.UTF-8 grep '[а-я]'
$
GNU grep 2.6.3, Debian GNU/Linux Squeeze
$ echo ПРИВЕТ | LANG=en_US.UTF-8 grep '[а-я]'
ПРИВЕТ
$ echo ПРИВЕТ | LANG=ru_RU.UTF-8 grep '[а-я]'
ПРИВЕТ
$ echo ПРИВЕТ | LANG=C grep '[а-я]'
$
# grep '[а-я]' myfile | grep -v '[0-9]' | wc -l
623
# sed '/[а-я]/!d;/[0-9]d;' | wc -l
619
#962287
Back-references не поддерживаются только при работѣ съ Extended POSIX regexes, съ BASIC — все работаетъ. Маны нужно читать внимательнѣе, тамъ написано не только про ‘dreadful botch’ , но и сказано, гдѣ этотъ ‘botch’ работаетъ, а гдѣ — нѣтъ.
Продолжая Back-references не поддерживаются только при работѣ съ Extended POSIX regexes, съ BASIC — все работаетъ. Маны нужно читать внимательнѣе, тамъ написано не только про ‘dreadful botch’ , но и сказано, гдѣ этотъ ‘botch’ работаетъ, а гдѣ — нѣтъ.