Чтобы добавлять сообщения и комментарии, .

@Strephil:
Strephil

sift is a fast and powerful open source alternative to grep.
sift-tool.org

Интересно.

@Strephil:
Strephil

А есть какой-то тайный смысл, почему grep не умеет искать tab?
grep '\t' — почему не работает? В чём смысл?
(какой же unix отстой)

@Strephil:
Strephil

Ого, GNU grep 2.21
Там и улучшена производительность, и баги какие-то поправлены (в том числе несколько, добавленных в версии 2.19).

@xorkrus:
xorkrus

Вот значит хочу из
<div class="info">много текста и других тегов</div>выдрать "много текста и других тегов". Казалось бы все просто (вот как щас помню)
grep 'info">*</div>'но не прокатывает.
А вот
grep '">*</div>'выдает
<div class="clear"></div>Я погуглил и пока не понял почему :\

@Strephil:
Strephil

Всё-таки GNU Grep очень странный проект.
С одной стороны, вроде как там много действительно интересных идей реализовано, чтобы работало быстро.
А с другой, ну нельзя же так. Если считать, что это одна из важнейших программ в unix-like окружении, как в выпушенных стабильных версия могут появляться вот такие ошибки:
$ echo aa | grep -E 'a(b$|c$)'
aa

Кто-то скажет, мол, не надо сидеть на Arch. Не уверен. Это будет лишь означать, что у вас не работает что-то другое. Ведь нет же какой-то действительно стабильной ветки?

Всё больше склоняюсь к тому, что GNU Grep просто нельзя использовать, да и не использует его никто. UNIX-way остался в 80-х. Для пользовательского поиска файлов по содержимому используют специально предназначенные для этого системы; для чего-то другого — написанные профессионалами реализации регулярных выражений на всяких там Java.
grep и командный интерфейс сегодня это удел дрочеров и маргиналов :-(((

@Strephil:
Strephil

grep -w no longer mishandles a potential match adjacent to a letter that
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"]

Неужели это починили, то что мне нужно, и теперь это будет работать с русскими словами???

@Strephil:
Strephil

Производительность GNU grep выросла в 200 раз!
Правда, в юникодных локалях всё стало еще хуже :-( падать стало реже, но производительность упала.

GNU Grep 2.19

@Strephil:
Strephil

ШОК! Производительность увеличили в 10 раз. Вышел GNU Grep — 2.17!

@Strephil:
Strephil

О, 1 января вышел GNU grep 2.16, починили пару багов, добавленных в 2.15.
А тот баг, что досаждал мне, всё висит и висит… :(

@Strephil:
Strephil

$ pacman -Q grep
grep 2.15-1
$ grep --version | sed 1q
grep (GNU grep) 2.14.56-1e3d

што

@Strephil:
Strephil

В GNU Grep пофиксили баги, к сожалению, далеко не всѣ :(((
savannah.gnu.org
К сожалению, нужные мнѣ баги по-прежнему баги и не фиксятся много лѣт… :(((

@Strephil:
Strephil

А ведь эта бага, grep '\<' в юникодах, это же кроме прочего означает, что --with и --without-included-regex работает по-разному? То есть, в Debian баги, получается нет?

@Strephil:
Strephil

Три года этот баг не исправят, три года grep не работает:
savannah.gnu.org

Означает ли это, что GNU и grep нужно удалить, откуда только можно? запретить использование GNU в школах?

@Strephil:
Strephil

$ echo 'глядите на него' | grep '\<гляд'
$ echo 'глядите на него' | sed -n '/\<гляд/p'
глядите на него
$ echo 'hello world' | grep '\<world'
hello world

@MikalaiBeliashou:
MikalaiBeliashou

внезапно grep не находит по regexp [\. 0-9]* строчку 1 234.50 Ну то есть находит, но только ту часть, которая без пробела

@Self-Perfection:
Self-Perfection

$ time grep -c 192.168.240.18 access.log
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

Почему с фиксированными строками в несколько раз дольше?!?!

@kamenev:
kamenev

Find files recursive by content
grep -Rl 'content' *

@Strephil:
Strephil

Просто праздник какой-то!
Развитие не остановить!

@Strephil:
Strephil

GNU grep 2.13
Багофиксы:
1. grep -i теперь правильно выводит многобайтовый символы, даже если большая и маленькая буква различной длины (например, турецкая «и-с-точкой»);
2. --include и --exclude снова можно совмещать.
"grep --include='.[ch]' --exclude='system.h' PATTERN " читает все *.[ch], кроме system.h (наверное, это удобно для всяких вимеров, которые не осилили ни нормальных языков, ни нормальных сред разработки)
Нововведения:
grep без опции -z по умолчанию считает разреженные файлы бинарными, если удается определить, что файл действительно разреженный.

@Strephil:
Strephil

Я говнарь.
Увидѣл новую версiю GNU grep 2.12,
как в головѣ сразу закрутилось продолженiе 85.06

@gelin:
gelin

Блин! xargs с ключиком -0 вообще работает? Как нормально скормить ему кучку прогрепаных путей с ПРОБЕЛАМИ?

@lomalkin:
lomalkin

Кастую в тред grep с морфологией.

@Strephil:
Strephil

Сразу двѣ хорошiя новости:
parted 3.1 и grep 2.11
GNU развивается!

@sandr1x:
sandr1x

Вдогонку вчерашнему: есть over9000 восстановленных .odt-файлов. Каким образом можно автоматически поискать среди них те, которые содержат определённое слово? Спасибо.

@Gem:
Gem

скопировать файлы содержащие строку mv $(grep -l '1189609240791-1268115603299237276@216.109.111.119') /tmp/inv

@Gem:
Gem

Examples using grep tldp.org

@nobodyzzz:
nobodyzzz

2000x performance win dtrace.org

@mdma:
mdma

А в пиндосе есть grep или аналог?

@Mara3matik:
Mara3matik

grep ⇔ g/re/p

@Else:
Else

посоны, как зарегулярить "мне нужна подстрока a, но только та, которая после b"?

@wasd:
wasd

Блин, как я это буду через 2 месяца читать? T_T

@Strephil:
Strephil

Еще 21 июня вышел GNU grep 2.9, а я еще ничего об этом не слышал… В слоуарче никаках обновлений не было… Что там новенького?

@Strephil:
Strephil

Что касается grep's interpretation of range expression is now more consistent with
that of other tools в новой версии, то это относится к восьмибитным кодировкам.
Раньше dfa вызывал функцию strcoll, и происходило смешение больших и маленьких букв. Если же использование dfa было невозможным (ссылки назад в регвыре), то работало по-другому. Теперь эта путаница устранена.

@Strephil:
Strephil

Ура! Вышла новая версия GNU grep — замечательной программы для поиска строк в файле по регулярным выражениям — 2.8. Нашел на gnu.org
Улучшена обработка символов в диапазоне 0x80…0xff во многих локалях (напримерб printf '\xff\n'|grep "$(printf '[\xff]')" || echo FAIL), исправлена ошибка с прекращением работы при некоторых проблемах с памятью.
В Арче пока нет, слоупочат пока…

@Strephil:
Strephil

GNU grep 2.7
./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 '[а-я]'
$

@Strephil:
Strephil

I love GNU!!!
# grep '[а-я]' myfile | grep -v '[0-9]' | wc -l
623
# sed '/[а-я]/!d;/[0-9]d;' | wc -l
619

@Strephil:
Strephil

Продолжая #962287
Back-references не поддерживаются только при работѣ съ Extended POSIX regexes, съ BASIC — все работаетъ. Маны нужно читать внимательнѣе, тамъ написано не только про ‘dreadful botch’ , но и сказано, гдѣ этотъ ‘botch’ работаетъ, а гдѣ — нѣтъ.

@Strephil:
Strephil

грепаю грепом сырцы грепа (:

@griffin:
griffin

В продолжение #718253 grep оказывается неплохо так умеет регулярки ;) а я вот раньше не знал. Если что grep -o 'regexpr' в помощь)

@griffin:
griffin

music.lib.ru и wget+grep просто созданы друг для друга)) Качаю музычку оттуда. Сайтик хорош — много музыки, нет капчи, прямые ссылки. Одно удовольствие.