Transcription
[Музыка] Знакомо ли это? Ваш срок выполнения задачи — сегодня. Вам нужно найти одну строку текста, которая поможет вам найти первопричину, и вам это нужно быстро. Вы открываете гигантскую кодовую базу компании и начинаете вручную открывать файлы, вырывать другие, просеивать каталоги, угадывая по именам. Ситуация только ухудшается. Итак, вы обращаетесь к Git. Вы ищете там, но понятия не имеете, как точно сказать ему, что вам нужно, и это занимает вечность. Что, если бы вы могли просмотреть всю свою кодовую базу до того, как ваш кофе допьет? RIGP — это гепард для поиска текста, который опережает gre и ag, серебряный искатель, в реальных проектах, а не только в бенчмарках. Разработчики, аналитики, писатели, более быстрый поиск означает более быстрое обучение, более быстрые исправления, более быструю работу. Многочисленные рецензируемые исследования внимания человека показали, что даже крошечные задержки повышают стресс и снижают производительность. Медленный поиск стоит вам времени и концентрации. Быстрый поиск возвращает их. Теперь вот в чем загвоздка. Я думал, поиск — это просто. Вы вводите слово, нажимаете Enter, ждете, вот и все. Но для меня разрыв между "достаточно хорошо" и "мгновенно" — это разрыв между разочарованием и потоком. RIP Group не просто находит текст. Он фильтрует шум, выделяет и подсвечивает результаты. Он может предоставить контекст, искать в бинарных файлах, даже в сжатых gzip файлах, и возвращает все в мгновение ока. Позвольте мне показать вам, как. [Музыка] Родился в 2016 году, набрав более 55 000 звезд на GitHub. Изначально он назывался RIP, как более короткий вариант Grip. Затем он стал XREP, затем Rust Grip, или R Grip в сокращении, что уже говорит о том, что использовалось для его создания. И, наконец, RIP был добавлен, чтобы передать сообщение о более быстром захвате. Теперь Reap также предполагает это. Мистер Бернт Суши утверждал, что эта коннотация никогда не была его намерением. Тем не менее, вот скромное предложение для нового визуального оформления. Если говорить серьезно, RIPG никогда не был и не будет на 100% заменой GP. Он предлагает отличные функции с невероятной скоростью. Благодаря своей популярности он почти синонимичен самому GP. Тем не менее, RIG grip ни на секунду не предполагает, что он может заменить GP или намерен это сделать. Он поддерживает все платформы и доступен везде. И одна вещь, которую вы быстро заметите, если пройдете через документацию, это постоянная битва с конкурентами. RG похож на серебряный искатель A и GP, но это известные. В самом верху у него есть список сравниваемых инструментов с бенчмарками, работающими на всей кодовой базе Linux, с такими инструментами, как hyper grip, достигающими половины скорости, а ag — менее 20% скорости rip grep, даже не вдаваясь в git grip и подобные. Я бы предложил изучить некоторые из них, потому что не только разные подходы интересны, но и трудно найти утилиту, которая была бы такой же умной, быстрой и мощной, как rip grip. Это порождает вопрос: почему так много альтернатив? Вероятно, самый известный из них — AG, серебряный искатель, написанный на C, раньше был моим личным выбором, но, похоже, проигрывает как в популярности, так и в эффективности. И это может разозлить некоторых людей, поэтому я приглашаю вас использовать раздел комментариев как выход для своих нервов. Вернемся к RG, вы найдете два интересных раздела. Один называется "Почему использовать rip grab", и именно об этом это видео. Но другой — "Почему не использовать rip grap". Начиная с неочевидного момента: может ли он заменить grap. И хотя он может, особенно если вы автоматизируете, работаете с серверами, пишете скрипты и требуете крайних случаев GP, RG, вероятно, не подходит для вас. По этой и другим причинам, вероятно, лучше использовать его локально. и в некоторых особых случаях, таких как предварительно подготовленный CI-раннер, который, как вы точно знаете, будет его иметь. Хотя RIP GRAP не совместим с POSIX, и никогда не намеревался быть. Так что имейте это в виду. Для тех из вас, у кого его еще нет, выберите свой любимый метод, и через 5 секунд вы станете счастливым rip grapper'ом. Начиная с самых основ, RG возьмет слово и путь для поиска. Это каждое появление слова "telegram" в ритме моего проекта. Вы заметите, что оно подсвечено и отображается номер строки результата. Это стандартные настройки RG, которые мы можем изменить позже. У него есть автодополнение, которое для меня обрабатывается carpace, что помогает с фильтрацией и объяснением флагов. Теперь мы искали слово. Что, если мы либо не помним термин, либо хотим частичную строку? RG обрабатывает любой поисковый запрос, если не указано иное, как регулярное выражение, что делает вещи невероятно удобными для поиска. Например, давайте используем "res" и обратную косую черту "w" плюс, что в регулярных выражениях означает одно или несколько слов, таких как поисковый запрос. без специальных символов. Если, например, мы сделаем то же самое, но с "w", за которым следует обратная косая черта "b", которая устанавливает границу после одного слова, такого как пробел, знак препинания или конец строки, мы получим один результат, не включая прогрессию выше, которая не имеет границы сразу после "res". Если вы живете в своем терминале, как и я, rip делает поиск чего угодно в вашем репозитории мгновенным. Но что, если того, что вам нужно, еще нет в вашем репозитории? Скажем, вы создаете конвейер данных для ИИ, который извлекает снимки цен или документы, которые меняются по регионам, достигает лимитов скорости и зависит от географических вариаций. Вот где вступает в игру спонсор этого эпизода. Data Impulse предоставляет вам премиальные резидентные и мобильные прокси с реальной доступностью, более 90 миллионов IP-адресов в 195 локациях. Поддержка SOCK 5 и HTTPS, вращающиеся или фиксированные сессии с пользовательской продолжительностью до 120 минут и быстрым временем отклика. Вы можете даже проверить, сколько прокси доступно в каждой локации, прежде чем начать. Ценообразование простое. Оплата по мере использования, без срока действия. Резидентные прокси стоят всего 1 доллар за 1 ГБТЕ. Мобильные прокси стоят 2 доллара за 1 ГБТЕ со скидками для больших объемов. И поддержка — это реальные люди 24/7. Перейдите на dataimpulse.com, создайте учетную запись, затем в панели управления вы можете сгенерировать учетные данные, выбрать страну или город, выбрать вращающиеся или фиксированные, и вставить их в скрейпер или тестовый стенд. Они не перепродают пулы других поставщиков, поэтому вы получаете стабильное качество по отличной цене, и вы можете даже управлять использованием и настройками с вашего телефона. Это dataimpulse.com. А теперь вернемся к видео. Это не видео о reg, но поскольку ribb по умолчанию работает с ними, вы увидите их довольно много сегодня, но они будут подробно объяснены. Тем не менее, у меня скоро будет отдельное видео о регулярных выражениях. Так что подпишитесь, если вы еще этого не сделали, чтобы увидеть основы, а также другие классные трюки и основные подводные камни, если вы не хотите в них попасть. Как упоминалось, поскольку по умолчанию поисковые запросы обрабатываются как регулярные выражения, code.например, означает "code" и любой следующий за ним символ. Но что, если я на самом деле ищу "code", за которым следует точка? Carbace спешит на помощь, а фиксированные строки гарантируют, что мы получим саму строку. Иногда нам нужны несколько выражений. Использование дефиса "e" столько раз, сколько вам нужно, создаст оператор "или", например, получение либо "telegram", либо "run" в ритме. Это объединит их все. Если вы обнаружите, что перечисляете слишком много таких выражений, вы можете отправить их в ribb в виде файла, простого текстового файла с выражениями. В этом случае просто чистый текст для поиска, как и раньше, затем RG принимает файл с путем, и вот он. Поскольку он поддерживает все уровни сложности регулярных выражений, если вы пишете на Go, например, и хотите получить все неэкспортируемые функции в вашем коде, которые по соглашению Go начинаются со строчных букв, вот они представлены перед вами. Все находки удобно сгруппированы под именем файла. Экспортируемые функции, кто-нибудь? То же самое. Начиная с заглавных букв, и вот они. Итак, до сих пор мы искали либо в одном файле, либо во всей кодовой базе, но RG может принимать конкретные имена каталогов и искать в них. Еще одна классная функция — игнорирование файлов и каталогов с точкой по умолчанию. Так что, если я попытаюсь найти свой GitHub action вот так, ничего не увижу. Но добавление флага "hidden" ищет скрытые каталоги и делает это рекурсивно. Важно упомянуть, что делать, если мы получаем слишком много результатов, чтобы они имели смысл. Max count может ограничить количество результатов на файл вот так, с которым вы можете поиграть по своему вкусу. В некоторых случаях имеет смысл даже искать каждую строку кода в каждом файле в репозитории. Интересно, что если вы обратите внимание, номера строки два нет. И это потому, что в файлах Go вы оставляете пустую строку после имени пакета, и RIP Greb фильтрует все. Следующая функция — это то, что я использую почти каждый раз, когда запускаю RG file gloves. Это простой поиск всех файлов Go, но мы можем расширить его и запросить все результаты, которые являются файлами Go или Markdown или PM. И это дает нам хитрый файл go.m domod, который я забыл отфильтровать. Так что добавим его, и у нас останутся только текстовые файлы. Вы не поверите, сколько раз это одно помогло мне просмотреть большие репозитории, как частные на работе, осознавая не только пустые и странные файлы, непреднамеренно закоммиченные, но и строки кода, которые было довольно рискованно отправлять, как они есть, но оставались скрытыми годами. Еще один флаг, который вы абсолютно хотите иметь в виду, — это тот, который перечисляет только файлы с результатами. С C вы добавляете количество находок. И поскольку в этом случае мы на самом деле ничего не ищем, а скорее любой код. Это все файлы SQL, TOML и текстовые файлы в репозитории с количеством строк кода. С поисковым запросом, таким как "code", например, вы можете получить файлы и количество находок поискового запроса. Но globes хороши, когда вам нужен гранулярный поиск. RG имеет флаг для типов файлов. Он принимает тип как есть и возвращает все результаты всех файлов Go или файлов с подсчетом, добавляя C. Вы также можете инвертировать флаг, используя заглавную T, что означает отрицание поиска, то есть все, кроме файлов Go. Если вы такой же, как я, и знаете флаги GP наизусть, вы, вероятно, знакомы с I, который отключает чувствительность к регистру. Но посмотрите на это. RIP Grip имеет флаг smart case, который происходит из Vimman AG. И хотя мистер Бернс Суши не любит эту опцию, мы говорим о 9 лет назад. Это похоже на игнорирование регистра. Также, когда вы знаете свое выражение, но хотели бы, чтобы RG работал против него, invert match — это чрезвычайно полезный флаг, который делает это. Итак, вот не очень полезный поиск всех непустых строк, которые не содержат символ @. Или, и вот где я действительно часто его использую, подсчитайте найденные совпадения. И если вам нужны только файлы с совпадениями, например, содержащие слово "code", есть флаги "files with matches", у которого есть собственный антифлаг "files without match". А теперь одна из моих абсолютных любимых функций RIP GRAP. Помните, мы искали GitHub action раньше. Вот способ поместить ваши находки в контекст, добавив одну строку, окружающую результат, с другими строками кода вокруг него. Вы можете расширять контекст столько, сколько хотите. Это функция, которую я знаю из многих утилит для ведения журналов, обычно называемых "хлебными крошками", и она говорит вам все, что вам нужно знать об этом инструменте. Он пытается выйти за рамки своей единственной функции, чтобы сделать более умную работу и добавить недостающие функции во всех остальных. До сих пор я предполагаю, что это чрезвычайно полезные приложения, но готовы ли вы к небольшому сюрпризу? RIP Grap также поставляется с утилитой поиска и замены, и именно здесь все становится невероятно полезным для тех из вас, кто собирается использовать его для автоматизации. RG Telegram R и Instagram сделают то, что вы ожидаете. Это не фактическая замена файла, если вы спрашиваете, просто результат в строке. Наконец, как и любая отличная современная утилита, rip grip отвечает grip RC для локальной конфигурации. Например, вот некоторые настройки с max column, поиском скрытых файлов по умолчанию, но игнорированием git и применением smart case везде. Вместо файла конфигурации doconfig rip grep выбирает любой путь, который вы установили в переменной окружения rip gre config path. После установки следующие запуски немедленно подхватят их. Наконец, отличная функция для вас, хакеров, или кого-либо еще, кто когда-либо пытался использовать gripping для бинарных файлов. Если вам когда-нибудь придется это сделать с нечитаемым файлом, как этот, флаг text помогает вам легко искать в бинарных файлах. Есть много других трюков и интересных моментов от автора в FAQ, которые я настоятельно рекомендую всем пользователям, например, флаг stats, сообщающий о результатах, скорости, потребленных байтах и т. д., или даже вывод JSON, если вы достаточно сумасшедши. С RIP Greb вы быстрее, чем когда-либо, но без надлежащих навыков работы с регулярными выражениями он раскрывает только половину скорости. Вот краткое руководство по регулярным выражениям, которое охватывает все, что вам нужно, и многое другое. Спасибо за просмотр, и до встречи в следующем выпуске.