The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Опубликована утилита ugrep 5.0 для расширенного поиска в файлах

18.02.2024 13:09

Состоялся выпуск проекта ugrep 5.0, развивающего продвинутый вариант утилиты grep для поиска данных в файлах. Дополнительно поставляется интерактивная оболочка ug с интерфейсом пользователя, предоставляющим предпросмотр окружающих строк. По производительности ugrep в разы опережает grep. Код проекта написан на языке С++ и распространяется под лицензией BSD.

Утилита совмещает наиболее полезные возможности программы grep с расширенной функциональностью, такой как возможность использования perl-подобных регулярных выражений, неточный поиск (fuzzy), режим показа шестнадцатеричных дампов, вложенный поиск, перекодирование текстовых кодировок, поиск в архивах (zip, 7z, tar, pax, cpio), сжатых файлах (gz, Z, bz2, lzma, xz, lz4, zstd, brotli), форматах документов (pdf, doc, docx, odt, epub,rtf), а также поиск метаданных в изображениях и полей в сертификатах. Имеется возможность ускорения поиска по содержимому каталогов, используя индекс, отдельно созданный утилитой ugrep-indexer.

Новая версия примечательная добавлением нового движка для поиска с использованием регулярных выражений, позволившего повысить производительность для некоторых типов масок. Добавлена опция "--exclude-fs" для исключения файловых систем при рекурсивном поиске. Добавлена опция "--all" для поиска во всех файлах, кроме скрытых. Улучшена подсветка синтаксиса.

  1. Главная ссылка к новости (https://github.com/Genivia/ugr...)
  2. OpenNews: Выпуск утилиты GNU grep 3.5
  3. OpenNews: beagrep - индексируемый вариант grep, перебирающий 2 Гб кода за 2 секунды
  4. OpenNews: Лидеры проектов GnuTLS, grep и sed выходят из проекта GNU в знак несогласия с политикой Фонда СПО
  5. OpenNews: В рамках проекта Glark развивается альтернатива Grep
  6. OpenNews: Разработка новых вариантов diff и grep для обработки сложных структур данных
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/60622-ugrep
Ключевые слова: ugrep, grep, search
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (108) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 13:22, 18/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Серьёзный вопрос - оно лучше ripgrep? Просто как-то сомневаюсь.
     
     
  • 2.2, амоним (?), 13:27, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • –19 +/
    ты нипанимаишь - ripgrep, пусть и лучше, но на расте. а это тупик для анонов. им надо с сишкой только.
     
     
  • 3.5, Аноним (5), 13:30, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +10 +/
    А чем оно лучше? Синтаксис регулярок свой собственный, обглоданный и ни с чем не совместимый, постоянно падает, пытается читать сразу несколько файлов и тормозит.
     
     
  • 4.68, Аноним (-), 05:52, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > А чем оно лучше? Синтаксис регулярок свой собственный, обглоданный и ни с
    > чем не совместимый, постоянно падает, пытается читать сразу несколько файлов и тормозит.

    Ну так они и назвали его rip намекая на перспективы проекта. Провиды бывают даже среди хрустиков :)

     
  • 2.3, амоним (?), 13:28, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    + готов поспорить, что оно на 0.00000001% быстрее чем ripgrep
     
  • 2.4, Аноним (4), 13:29, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Если верить тестам, то ugrep быстрее:



    search          -n -no -wn -win -wino -c -wic -l -wil
    ugrep   0.03 0.03 0.03 0.03 0.03 0.03 0.02 0.03 0.00 0.01
    rg      0.03 0.04 0.03 0.05 0.05 0.06 0.03 0.05 0.00 0.02
    ag      0.69 0.66 0.40 0.35 0.35 0.35 0.10 0.10 0.10 0.10
    ggrep   0.11 0.13 0.15 0.15 0.53 0.53 0.11 0.51 0.00 0.08



     
     
  • 3.9, Аноним (5), 14:03, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    По тестам и мюсли у авторов быстрее. Я проверял, на практике, рип не более чем на несколько процентов быстрее гну греп -- всё в пределах погрешности в итоге, но, при этом, это жалкий огрызок не являющийся заменой и сравнение даже не было равноценным. Ну и, всё же, чтобы засегфолтить гну греп придётся ещё попотеть.
     
     
  • 4.11, Голум (?), 14:15, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > не более чем на несколько процентов

    '''
    % du -hs .
    242M .
    % time grep --color=auto -R test 2>&1 > /dev/null
    0,11s user 0,51s system 97% cpu 0,630 total
    % time rg -uuu test 2>&1 > /dev/null
    0,17s user 0,64s system 718% cpu 0,113 total
    '''

    Да, всего-то на каких-то 500% быстрее. Спасибо многопоточности.

     
     
  • 5.13, Аноним (5), 14:19, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Это не равноценно. Если сравнивать в 1 поток (единственное практическое применение) и с регулярками, то всё не так замечательно.
     
     
  • 6.14, Голум (?), 14:20, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +5 +/
    И зачем нужно страдать, используя его в 1 поток?
     
  • 6.18, Аноним (18), 15:03, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    А с какого рожна сравнение должно быть равноценным?! Типа сравнивая болид F1 с Москвичем у болида надо движок поменять и шины сдуть?
     
     
  • 7.20, Аноним (5), 15:09, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Тут скорее Ока сравнивается с Мерседесом. Конечно, глупо сравнивать 1 в 1, если возможности и применения разные, но хотелось бы видеть сравнения в том, в чём они выполняют одни и те же функции. И да, Ока ржавая.
     
     
  • 8.22, Голум (?), 15:16, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ржавая Ока и Мерседес с одинаковой скоростью стоят в пробке Стоит ли переплачив... текст свёрнут, показать
     
     
  • 9.23, Аноним (5), 15:20, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Имхо, Ока ломается чаще и неожиданнее Тут уже личный выбор, стоит ли переплачив... текст свёрнут, показать
     
     
  • 10.61, rvs2016 (ok), 00:52, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ремонт Мерседеса - дороже Это уже 2-я переплата за него ... текст свёрнут, показать
     
     
  • 11.77, Аноним (77), 12:29, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А с жизнью в Оке расстаться проще ... текст свёрнут, показать
     
  • 6.46, barmaglot (??), 19:18, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это не только не равноценно, сравнивать прогретый кэш ФС с не прогретым, так ещё и считать не умеет: разница около 100мс , прибавка к производительности ~20% и при этом 8-ми кратное использование ЦПУ у рг. Ну г. как г. ...
     
     
  • 7.48, Аноним (-), 19:27, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> 0,630 total
    >> 0,113 total
    > так ещё и считать не умеет: разница около 100мс , прибавка к производительности ~20% и
    >> 97%
    >> 718%
    > при этом 8-ми кратное использование ЦПУ у

    Сразу виден старый, заслуженный Ветеран-Воен Супротив Раста - забросил в свое время школу, дабы посвятить себя всего защите Земли (и Вселенной) от Ржавой Угрозы!

    Правда, это постоянно аукается ...

     
     
  • 8.49, Аноним (49), 19:32, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ага, эти подделают любые тесты лишь бы своего любимчика выгородить Не раз уже п... текст свёрнут, показать
     
     
  • 9.89, barmaglot (??), 14:51, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ага, 3 14здеть, не мешки ворочать Ответ был на вот этот коммент du -hs... текст свёрнут, показать
     
  • 5.44, barmaglot (??), 19:14, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Герой, поиск по файловой системе замерил :) И рип запустил вторым на прогретом кэше.
     
  • 4.12, Аноним (12), 14:16, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Не знаю как ты тестил, у меня на стандартных задачах rg в 2-10 раз быстрее гнугрепа.
     
     
  • 5.15, Аноним (5), 14:22, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Полноценно тестил. Когда хотел ускорить поиск по дереву исходников. Быстрее он только когда есть быстрый случайный доступ. А это не то, что стоит замерять. Вообще, моя главная претензия это низкая надёжность и непредсказуемость.
     
     
  • 6.19, Аноним (18), 15:06, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да уже поняли, что ты тестил rg в 1 поток. Хочешь реального прироста - юзай все возможности. Смысл rg в его фичах, а не в том, что там какая-то особая раст-магия, которая делает его быстрее.

    Что касается надёжности - хз, года 2 как перешёл с грепа (в том числе в скриптах), проблем не видел.

     
     
  • 7.21, Аноним (5), 15:12, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Когда я тестил не в 1 поток, гну греп ушёл вперёд с большим отрывом, а рип работал в разы дольше целиком забивая io.
     
     
  • 8.24, Голум (?), 15:33, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А можно поподробней На какой версии, с какими ключами, с какими регулярками и н... текст свёрнут, показать
     
     
  • 9.25, Аноним (5), 15:36, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Полагаю, дело было в iowait А когда крашилось, это определённо баги, но мне не ... текст свёрнут, показать
     
     
  • 10.26, Голум (?), 15:53, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Года за 4 использования не сталкивался ни с крашами, ни с лагами, хотя и длинные... текст свёрнут, показать
     
     
  • 11.27, Аноним (5), 16:01, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Странно, я столкнулся в первую же неделю Правда, и регулярки у меня специфическ... текст свёрнут, показать
     
     
  • 12.51, Аноним (12), 23:29, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Где тесты, мань Где багрепорты Может хватит врать ... текст свёрнут, показать
     
     
  • 13.55, Аноним (5), 23:42, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Мне, в общем-то, всё равно что там фанатки ржавого думают, я уже несколько раз с... текст свёрнут, показать
     
     
  • 14.57, Голум (?), 23:54, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Остальные ещё не лучше ... текст свёрнут, показать
     
  • 9.33, Аноним (49), 17:21, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да очевидно чел просто врёт, потому что очень нравится греп ... текст свёрнут, показать
     
     
  • 10.35, Голум (?), 17:36, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Сам посравнивал, в некоторых условиях в пайпе rg получался до 20 медленнее гнуг... текст свёрнут, показать
     
     
  • 11.52, Аноним (12), 23:30, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Пруфы, конечно же, никто и не думал предоставлять с Каневский ... текст свёрнут, показать
     
     
  • 12.119, Аноним (119), 16:59, 21/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А потом Ваши пруфы - не пруфы c ... текст свёрнут, показать
     
  • 8.31, Аноним (31), 17:05, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    У тебя там одноядерный процессор и IDE-диск что ли Рипгреп для солидных господ ... текст свёрнут, показать
     
  • 8.32, Аноним (49), 17:20, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну это просто ложь Даже в этом треде есть выхлопы Зачем вводить в заблуждение ... текст свёрнут, показать
     
     
  • 9.34, Аноним (5), 17:24, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    В том и пертрушка, что любой может убедиться в правдивости А если не получилось... текст свёрнут, показать
     
     
  • 10.53, Аноним (12), 23:33, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Конечно задумайся Без пруфов приходить к технарям врать - это достойно настояще... текст свёрнут, показать
     
     
  • 11.56, Аноним (5), 23:49, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Т е ты сейчас серьёзно заявляешь, что, по-твоему, многопоточное чтение со случа... текст свёрнут, показать
     
     
  • 12.79, Аноним (77), 12:36, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Тебе уже попытались намекнуть, что всё зависит от условий 1 Типа носителя Для... текст свёрнут, показать
     
     
  • 13.84, Аноним (5), 13:22, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    С какой целью кто-то будет намекать очевидное Вообще, ты ошибаешься, фрагментир... текст свёрнут, показать
     
  • 5.82, User (??), 12:54, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А "стандартные задачи" это что?
    У меня - ну вот выхлоп stdout отфильтровать - уже даже в логи заглянуть задача все более "не стандартная" да и... и примерно все, наверное.
     
  • 3.10, Пользователь планеты Земля (?), 14:14, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    я так понимаю для правильных тестов нужно знать правильный набор флагов для ... большой текст свёрнут, показать
     
     
  • 4.36, Заноним (?), 17:37, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    "Какие-то неправильные у вас гуси":

    $ time grep -R xml ./kitchen 1>/dev/null 2>/dev/null
    cpu=99% user=0.053 system=0.495 total=0.550

    $ time ug -R xml ./kitchen 1>/dev/null 2>/dev/null
    cpu=92% user=0.001 system=0.002 total=0.003

    $ time rg xml ./kitchen 1>/dev/null 2>/dev/null  
    cpu=1142% user=0.238 system=1.508 total=0.153


    Но ugrep из блэкджеком:
    $ grep -R xml ./kitchen 2>/dev/null | wc -l
    63474

    $ ugrep -R xml ./kitchen 2>/dev/null | wc -l
    63468

    $ rg xml ./kitchen 2>/dev/null | wc -l
    63474


     
     
  • 5.37, Заноним (?), 17:55, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А вообще, какая-то дичь в ugrep:

    $ time ug -R xml ./kitchen 2>/dev/null | wc -l    
    63468
    cpu=475% user=0.605 system=2.352 total=0.621
    cpu=27% user=0.023 system=0.147 total=0.621

    $ time ugrep -R xml ./kitchen 2>/dev/null | wc -l
    63468
    cpu=968% user=0.331 system=1.196 total=0.158
    cpu=48% user=0.010 system=0.066 total=0.157


    $ pacman -Qo $(which ugrep)
    /usr/bin/ugrep is owned by ugrep 5.0.0-1

    $ pacman -Qo $(which ug)  
    /usr/bin/ug is owned by ugrep 5.0.0-1

    $ sha256sum $(which ug)
    84ba767400753ac772df0d87c08f9f5e8e127ec3df1ab3f9367662e1e23a10da  /usr/bin/ug

    $ sha256sum $(which ugrep)
    f99d9cca69c3846141dad581baf2bad240614490834471b556cffa6e976e929a  /usr/bin/ugrep

     
     
  • 6.38, Пользователь планеты Земля (?), 18:17, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    там вообще 4 утилиты, наверное для разных задач pacman -Ql ugrep ugrep us... большой текст свёрнут, показать
     
  • 5.47, barmaglot (??), 19:24, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вот как тестировать нужно. рг самый быстрый, т.к. его просто нет! Неуловимый Джо!
    [~/test]
    > time egrep -R "^test" . >/dev/null 2>&1

    real 0m6.464s
    user 0m3.913s
    sys 0m2.308s

    [~/test]
    > time egrep -R "^test" . >/dev/null 2>&1

    real 0m5.858s
    user 0m3.870s
    sys 0m1.935s

    [~/test]
    > time egrep -R "^test" . >/dev/null 2>&1

    real 0m5.835s
    user 0m3.875s
    sys 0m1.907s

    [~/test]
    > time ug -R "^test" . >/dev/null 2>&1

    real 0m1.891s
    user 0m0.641s
    sys 0m1.228s

    [~/test]
    > time rg -R "^test" . >/dev/null 2>&1

    real 0m0.001s
    user 0m0.001s
    sys 0m0.000s

    [~/test]
    > which rg

    which: no rg in (...)

    [~/test]
    > which ug

    /usr/bin/ug

     
  • 4.40, Аноним (40), 18:25, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > для себя провёл простой тест "без всяких", просто найти слово rust

    Соревнование по дефолтной агрессивности флагов?
    Пришлите мне тестовую директорию, соберу утилитку которая обгонит любого конкурента, тестовую директорию и запрос не менять ;)

     
     
  • 5.42, Пользователь планеты Земля (?), 19:09, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Соревнование по дефолтной агрессивности флагов?

    нет, просто эмуляция того что например через пару недель мне вдруг нужно будет найти файл где упоминается определённое слово или словосочетание, а это сценарий в 98% случаев, так вот то что вы называете "дефолтная агрессивность флагов" я, да и большинство думаю согласятся, в данном случае, можно назвать разумным выбором дефолтных флагов автором программы. Как по мне, в таких случаях, проще добавить недостающие флаги чем убавить лишние.

     
  • 2.60, rvs2016 (ok), 00:47, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Серьёзный вопрос - оно лучше ripgrep?

    В работе с кодировками - лучше.

    ripgrep не обрабатывает шаблоны, содержащие русские буковки:

    % rg -i эмулятор *
    found invalid UTF-8 in pattern at byte offset 0: \xDC\xCD\xD5\xCC\xD1\xD4\xCF\xD2 (disable Unicode mode and use hex escape sequences to match arbitrary bytes in a pattern, e.g., '(?-u)\xFF')

    У меня терминал не utfный, а koi8й.

     
     
  • 3.80, Аноним (-), 12:48, 19/02/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 4.87, pavlinux (ok), 14:02, 19/02/2024 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
  • 3.111, Аноним (111), 11:19, 20/02/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > ripgrep не обрабатывает шаблоны, содержащие русские буковки:

    Да при чём тут "русские буковки", когда у тебя:

    > терминал не utfный, а koi8й.

    Год сейчас уже 2024-й.

     
  • 3.114, morphe (?), 13:58, 20/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > У меня терминал не utfный, а koi8й.

    Вот он и сказал что ты дал ему на вход не utf-8, а набор байт (у ripgrep 2 режима - unicode и bytes, у других грепов обычно только bytes), и предложил как можно выключить utf-8 mode (= перейти в режим bytes) для работы с этим

     

  • 1.7, Аноним (12), 13:55, 18/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –8 +/
    Ripgrep круче и удобней, а это просто тот же grep, но быстрый и на крестах. Не понял зачем оно нужно для моих задач.
     
     
  • 2.16, Anonimus (??), 14:48, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не пользуйся
     
  • 2.39, Аноним (40), 18:22, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не знаю как с ugrep, но вот чем rg не удобный:
    1) Многие символы в начале шаблона поиска надо экранировать '\{' '\-'
    2) Сильно урезанные регулярки без lookahead/lookbehind (имхо, одна из главных фич регуярок)
    3) Не то чтобы стабильный, в некоторых версиях например не работал поиск по glob'ам, а для rg это ключевая фича для поиска по файлам с определенным именем

    Не стал записывать в минусы, но скорость rg достигается в основном агрессивными флагами, с -uuu он уже поскромнее. А без -uuu не ищет в .gitignore (ок, не всегда нужно), дотфайлах (это уже критично и про это надо вспомнить), бинарных файлах (мне некритично)

     
     
  • 3.41, Аноним (49), 18:47, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Всё так. Rg при _вдумчивом_ применении рвёт аналоги просто на порядки. Ugrep такой же как grep, но прост побыстрей. Для себя пробовал юзать grep, ugrep, rg в параллели - понял что в целом rg удобней.
     
     
  • 4.43, Аноним (5), 19:10, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Он даже запускается дольше.
     
     
  • 5.45, Аноним (49), 19:17, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Кто?
     
  • 3.120, Аноним (119), 17:07, 21/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >Сильно урезанные регулярки

    Уже одного этого достаточно чтобы всерьез не рассматривать ripgrep в принципе.

     
  • 2.123, Аноним (123), 08:59, 23/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Ripgrep круче и удобней, а это просто тот же grep, но быстрый и на крестах. Не понял зачем оно нужно для моих задач.

    Лично у меня не получилось искать в *.docx с помощью ripgrep, но получилось с ugrep. Допускаю, что дело во мне, потому готов посмотреть на набор ключей от аксакалов рипгрепа, которые покажут как надо.

     

  • 1.8, Пользователь планеты Земля (?), 13:56, 18/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    я так понимаю это что-то типа [ ripgrep-all + fzf ] в одном флаконе, но по фичам всё же до них не дотягивает ибо ripgrep-all поддерживает больше форматов а fzf имеет больше возможностей. В общем очередной комбайн.
     
  • 1.50, Аноним (50), 23:00, 18/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Работать с такой утилитой учиться надо. Однострочник на перле будет короче и примерно в сто раз понятнее, чем мантры нестандартных флажков. Для большинства ситуаций можно обойтись rgrep | xargs sed. Люди не учат базовые юниксовые вещи, не понимают, что так можно.

    >написан на языке С++
    >распространяется под лицензией BSD

    Шаблон порвал automake в качестве сборочной системы. Ожидал cmake или meson.
    >ug

    С названием утилиты зато все хорошо.

     
     
  • 2.54, Аноним (12), 23:37, 18/02/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    О, а вы, я погляжу, юникс ветеран? Ну давайте сравним юниксовый grep/sed с гнутым. Какой из юниксов возьмём?) Я бы предложил digital unix, да помер он 15 лет назад.
     
     
  • 3.83, Аноним (50), 13:20, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Совершенно не обязательно быть ветераном и с 80х годов пользоваться юниксами, чтобы использовать мощь юниксового подхода. Я очень редко админил фряху, но жил всегда на линуксе, так что никаким ветераном юникса не являюсь.
    Юникс - это прежде всего мышление и подходы.
    Как большинство пользует стандартные утилитки? В основном, копируя готовые "команды". Тогда как настоящая мощь в том, чтобы писать программу под каждую идею. Шелл, сед, авк, перл - куча вариантов. 95% сисадминов на это не способны, потому что предпочитают не вылезать из окошек, не хотят мыслить потоками данных, их фильтрами, трансформациями, перенаправлениями. Хотят императивно перебирать "сущности", писать условия (расставлять флажки). Инстинктивно понятная любой обезьяне деятельность.
     
     
  • 4.95, AKTEON (?), 23:37, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вот-вот. У нас один сотрутник таскает  awk в windows
     

  • 1.58, rvs2016 (ok), 00:33, 19/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > неточный поиск (fuzzy)

    Это как? 🤔

     
     
  • 2.62, Аноним (62), 01:20, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Когда ты ищешь, к примеру, "каледор", но поиск выдаёт так же и правильное "коридор". Т.е. выдаёт слова, ПОХОЖИЕ на искомое.
     
     
  • 3.78, pavlinux (ok), 12:32, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Княжество Каледор − место, где находится Кузница Ваула, самый яростный из всех вулканов Ултуана.
     
  • 2.94, Quad Romb (ok), 20:08, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Наверное, выдать результаты отличающиеся на несколько символов от заданной маски и/или образца.
    Документацию не читал, сразу честно признаюсь.
     
  • 2.116, Аноним (123), 09:38, 21/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Позволяет находить результаты, отличающиеся от заданного образца на заданное число символов (по  умолчанию на 1):
    то есть найдет как заданный образец, так и варианты, где на 1 символ больше, на один символ меньше или один из символов отличается. Количестве символов различия можно задать (а заодно и варианты какие именно отличия нужны - например только если символ лишний или только если n символов отличается).

    с этм ключем в его виде по-умолчанию (различие в 1 символ):
    при поиске "test" найдет и, собственно, "test" и "test1", "te2st", "2test", "tst", "est", "tes", "t3st", "nest".

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

     

  • 1.59, rvs2016 (ok), 00:35, 19/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > вложенный поиск,

    И это как? 🤔

    > перекодирование текстовых кодировок

    Кодировки из какого набора?
    Из iconv --list?

     
     
  • 2.64, Аноним (62), 01:46, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вложенный - видимо, поиск в результатах. Скажем, ищешь строку, где есть коммент "//TODO", а потом среди тудушек ищешь задачу со словом update. Это ЕСЛИ вложенный поиск идёт в найденой строке. А учитывая туnую логику автора, он может искать и чисто в файле!
     

  • 1.63, Аноним (62), 01:43, 19/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    Сразу видно, утилиту писал линynсоидный юзабилист в кавычках, потому что самы... большой текст свёрнут, показать
     
     
  • 2.65, Аноним (62), 01:58, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну и ещё по этому юзабиласту: запуск в венде с -Q выдал:

    [mugrep:  [1;31mno ANSI terminal keyboard detected [m


    Ну да, ну да, пошли мы нафиг, юзеры оффтопика :)

     
     
  • 3.70, Аноним (111), 08:08, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Ну да, ну да, пошли мы нафиг, юзеры оффтопика

    Всё правильно.

     
  • 2.66, Вы забыли заполнить поле Name (?), 02:04, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    По-поводу 1 2 3 - это дефолты в grep.
     
     
  • 3.74, Аноним (74), 10:09, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Думаешь, ему есть какое-то дело до вопросов совместимости, и чтобы скрипты не ломались?
     
     
  • 4.97, Вы забыли заполнить поле Name (?), 00:43, 20/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Думаешь, ему есть какое-то дело до вопросов совместимости, и чтобы скрипты не
    > ломались?

    Очевидно, да.

     
  • 4.102, Аноним (102), 04:24, 20/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Причём тут вообще совместимость?! ugrep - это НОВАЯ утилита. Да, "по мотивам" старого grep, но написана-то она в 21 веке! Уж наверное если кто-то заморочился написать ЕЩЁ ОДНУ искалку, то она совсем не обязательно должна быть совместимая. Желательно, но не обязательно. ТЕМ БОЛЕЕ, что если у тебя тыщща "скриптов", нафига тебе ugrep?! Юзай старую, СОВМЕСТИМУЮ grep, делов-то! А вот для новых практик "пальцетыканья в консоли" утилита должна предоставлять максимально краткий синтаксис и максимально удобные дефолты.
     
  • 3.81, Аноним (-), 12:52, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > По-поводу 1 2 3 - это дефолты в grep.

    Т.е. если какие-то долбояшщеры 100500 лет назад приняли тупейшее решение...
    то мы должны тянуть это годами "патамушта диды завещали не ломать обратную совместимость"???
    И в этом весь линукс... Не дай бог сломать скриптик какого-то неосилятора исправить!

     
     
  • 4.91, User (??), 16:53, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, вы ж дохреналлион баш-портянок за нас всех переписывать не пойдете? С появлением systemd их количество несколько снизилось с а(х)фиглиарда до всего лишь дохреналлиона - но наткнуться мизинцем-об-табуретку когда какой-то пионЭр в centos'е 8 "поменял" родной-немодный grep на вот новый ripgrep - было нифига не прикольно.
     
     
  • 5.103, Аноним (102), 04:28, 20/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А кто вообще вас заставляет менять grep на ugrep!??!?! Нужны скрипты - сидите на протухшем grep, он всё равно всегда есть в системе. Но для работы, для БЫСТРОГО поиска файлов, сделали ugrep, которой вообще не обязательно быть совместимой с grep. Не настолько "диды" были умные, делая умолчания для grep. И ugrep может (и должен) исправить эту порочную практику. Пункты я указал, АРГУМЕНТЫ против имеются? (кроме остоnи3девшей мантры "совместимость с тухлым прошлым")
     
     
  • 6.107, User (??), 07:43, 20/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > А кто вообще вас заставляет менять grep на ugrep!??!?! Нужны скрипты -
    > сидите на протухшем grep, он всё равно всегда есть в системе.
    > Но для работы, для БЫСТРОГО поиска файлов, сделали ugrep, которой вообще
    > не обязательно быть совместимой с grep. Не настолько "диды" были умные,
    > делая умолчания для grep. И ugrep может (и должен) исправить эту
    > порочную практику. Пункты я указал, АРГУМЕНТЫ против имеются? (кроме остоnи3девшей мантры
    > "совместимость с тухлым прошлым")

    1. Меня - никто не заставляет, но у пионЭров периодически че-шет-ся.
    2. Собственно, называйся оно какой-нибудь bystroye_iskalko - ваще без вопросов. Но ассоциировать себя с grep'ом будучи при этом чуть-чуть, самую капельку, малость - "не таким"... осуждаем, решительно осуждаем. Фу таким быть!
    3. As for me - интерактивное грепование по кучам мусора на боевых серверах все больше-и-дальше уходит в область "славного прошлого"-туды-ему-и-дорога, а вот кривая-косая-горбатая скриптота с нами, увы, примерно "навсегда". Поиск по электронной почте? По адресной книге\контактам? По пачке docx\pdf? По имени файла, раз уж "по содержимому" мы ниалё? Неее, ребят - со всем этим вам не сюда. Сколько-нибудь осмысленный (Не "переменная Х_Е_Р", а find usages\goto definition хотя бы) поиск по проекту? Опять мимо. Логи греповать? Так эластик или там какой loki тупо удобней в современных окружениях. Локально на сервере? Ну, там где это осмысленно - journalctl тупо быстрее, да еще и позволяет серверу в этот момент делать что-нибудь полезное, а не только "греповать-в-цать-потоков". Есть задачи, где\когда grep все еще нужен\удобен - но для меня они настолько "разовые", что на скорость\"удобство"  примерно покласть - не стоит того, чтобы переучиваться.

     
  • 4.96, Вы забыли заполнить поле Name (?), 00:39, 20/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >> По-поводу 1 2 3 - это дефолты в grep.
    > Т.е. если какие-то долбояшщеры 100500 лет назад приняли тупейшее решение...

    С чего вдруг?

    1. По умолчанию поиск ищет соответствие шаблону. Я бы ожидал регистрозависимого поиска.
    2. Рекурсивный поиск - более трудоемкая задача. Проведи аналогии с яп, где deepcopy никогда не применяется по умолчанию.
    3. Чаще всего нужен результат, чтобы его передать на вход другой команде.

     
     
  • 5.99, Аноним (102), 04:16, 20/02/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    1 Объясни, ЗАЧЕМ тебе регистрозависимый поиск Ты что, боишься найти машу в... большой текст свёрнут, показать
     
     
  • 6.112, Серб (ok), 13:02, 20/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    1. Очевидно, что практика программирования и конфигурирования показывает сильную разницу между поиском, например host и Host. Насколько я могу судить в винде не так. Но кого это волнует.
    2. Для поиска вглубь есть find который ищет файлы по куче условий. А вот уже список файлов можно использовать для grep.
    3. При том, что для быстрого поиска по файлам используются специальные сервисы, которые хранят индексы для файлов для быстрого поиска.
     
  • 6.113, Серб (ok), 13:22, 20/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Добавлю простенький пример:

    find ./ \( -name "*.cpp" -or -name "*.hpp" \) ! -name moc_* -exec grep -H File {} \;

     
  • 3.98, Аноним (102), 04:08, 20/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну ты мне прямо глаза открыл! :)) А ничего, что эти "дефолты" придумывали люди с ограниченным умишком и 40 лет назад?! Время идёт, практики меняются, совершенствуются. То, что в 197* казалось очевидным, в 202* уже кажется смешным. Если уж вы делаете утилиту для НАБОРА ПАЛЬЦАМИ В КОНСОЛИ, неужели нельзя сделать дефолты максимально юзабельными?! Чтобы мне требовалось набрать ТОЛЬКО "ug подстрока" и ВСЁ!
    Очевидно же, что чем меньше надо указывать флагов, тем быстрее работа.
     
  • 2.90, User (??), 16:50, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, персонально _я_ предполагаю, что по исходникам имеет смысл искать с помощью _ide_, а не прикручивать к чему-то-там "фигню сорокалетней давности" в попытках эту самую IDE получить.
    А вот для работы уже готовых скрЫптов Эн-летней давности стабильность "воооон тооой фигни" важна-и-нужна.
     
     
  • 3.101, Аноним (102), 04:21, 20/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Бывает, задача не только в сорсах! Например, ты забыл, какой вебсайт у тебя на порту 8080. Грепанул - вот тебе конфиг! И чем меньше надо указывать флагов в консоли, тем лучше - вот моя претензия.
     
     
  • 4.108, User (??), 07:53, 20/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Бывает, задача не только в сорсах! Например, ты забыл, какой вебсайт у
    > тебя на порту 8080. Грепанул - вот тебе конфиг! И чем
    > меньше надо указывать флагов в консоли, тем лучше - вот моя
    > претензия.

    Эм. Ну... "А НАХРЕНА?"
    Вот чот даже как-то и сообразить не могу, в каком случае у меня на одном сервере может завестись пачка сайтов на разных портах и нахрена мне при этом выяснять их принадлежность именно "от порта", причем делать это достаточно часто, чтобы имело смысл букАвы экономить?

     
  • 2.104, Аноним (102), 04:33, 20/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ещё один косяк:
    По старой юниксоидной привычке автор режет файл по '\n'. В венде же (для которой ugrep тоже скомпилен) принято окончание '\r\n'. Соотв. когда утилита выдаёт JSON-вывод, ВСЕ файлы имеют на конце мусорный '\r' - спасибо, рук0*опы, что кладёте болт на стандарты в ОС!
     

  • 1.67, Аноним (67), 03:50, 19/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Нашли с чем сравнить по скорости - с grep. Академический пример из всех книг по Perl - однострочный скрипт работает быстрее, чем компилированный grep.
     
     
  • 2.72, Sw00p aka Jerom (?), 08:55, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    а смысл сравнивать, если все упирается в IO, ищем ведь один раз, и этот раз - всегда будет медленным внезависимости как назвать Г или УГ или РГ :)
     

  • 1.73, Golangdev (?), 08:56, 19/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Нихрена оно по .docx не ищет.

    Не нужно.

     
     
  • 2.75, Аноним (75), 11:14, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    По docx искать нужно сервер поиска ставить под венду.
     
     
  • 3.93, Аноним (93), 19:19, 19/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    С какого перепугу? *.Docx - это всего лишь зипованный XML. Его можно обрабатывать и на Linux и на Windows. Не путать с бинарным форматом *.Doc.
     
     
  • 4.105, Аноним (102), 04:55, 20/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    К слову, ugrep УЖЕ УМЕЕТ искать в архивах, так что всё, что ему нужно - как-то "просеивать" теги ворда и выводить текст.
     
  • 2.117, Аноним (123), 09:46, 21/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Нужно флаг работы с сжатыми файлами добавить - тогда впринципе ищет (напоминаю, что docx - это куча запакованных в основном xml'ек).
     

  • 1.76, Аноним (75), 11:15, 19/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Как поставить одной командой?
     
  • 1.85, mos87 (ok), 13:36, 19/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ag уже не моден как погляжу? стОит с него переползать на сабж?
     
     
  • 2.121, Аноним (119), 17:18, 21/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Если ты при выборе рабочих инструментов руководствуешься "модой" у меня для тебя плохие новости.
     

  • 1.106, Аноним (102), 05:00, 20/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Если кому интересно, слепил WPF-прогу - враппер для ugrep:

    https://ic.pics.livejournal.com/thornik/956427/117679/117679_original.png

     
     
  • 2.110, Аноним (111), 11:17, 20/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > WPF

    Зaкoпaй это обратно, где взял.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру