2.8.4.6 Ripgrep — рекурсивный поиск в текущем каталоге шаблона регулярного выражения
Скачать документ Установка
Синтаксис
Опции
Позиционные аргументы
Примеры использования
Окружение
- Версия РЕД ОС: 7.3
- Конфигурация: Рабочая станция
- Версия ПО: ripgrep-13.0.0
Ripgrep (или rg) — это инструмент командной строки для рекурсивного поиска в текущем каталоге шаблона регулярного выражения. Ripgrep предназначен для замены стандартной команды grep с улучшенной производительностью и удобством использования. Ripgrep обладает высокой скоростью работы благодаря использованию многопоточности и оптимизированным алгоритмам.
По умолчанию ripgrep будет учитывать .gitignore и автоматически пропускать скрытые файлы/каталоги и двоичные файлы. Стандартный набор регулярных выражений ripgrep гарантирует линейное время поиска. Поэтому такие функции, как обратные ссылки и произвольные проверки, не поддерживаются. Флаг --pcre2 можно использовать для включения обратных ссылок и проверок.
Ripgrep поддерживает файлы конфигурации. Установите RIPGREP_CONFIG_PATH в файл конфигурации. Файл может содержать один аргумент оболочки на строку. Строки, начинающиеся с #, игнорируются.
Установка
Для установки ripgrep выполните в терминале команду (потребуются права администратора):
sudo dnf install ripgrep
Дальнейшая работа с программой должна выполняться с правами обычного (непривилегированного) пользователя.
Синтаксис
Утилита доступна для запуска через терминал при помощи команды следующего вида:
rg [<ОПЦИИ>] ШАБЛОН [ПУТЬ ...]
Для просмотра опций ripgrep используйте команду:
rg --help
Опции
Основные опции утилиты ripgrep:
-A, --after-context — показывать количество строк после каждого совпадения (переопределяет флаг --context и --passthru flags);
--auto-hybrid-regex — динамически выбирать между поддерживаемыми регулярными выражениями в зависимости от функций, используемых в шаблоне;
-B, --before-context — показывать количество строк перед каждым совпадением;
--binary — выполнять поиск в двоичных файлах (по умолчанию ripgrep пытается автоматически пропускать двоичные файлы, чтобы повысить релевантность результатов и ускорить поиск);
--block-buffered — использовать буферизацию блоков;
-b, --byte-offset — выводить смещение на основе 0 байт во входном файле перед каждой строкой вывода, если указано -o (--only-matching), выводить смещение самой соответствующей части;
-s, --case-sensitive — выполнять поиск с учётом регистра;
--color — определять использование цветов;
--colors — определять настройки цвета для использования в выходных данных;
--column — определять номер столбца, начиная с 1;
-C, --context — показывать количество строк после каждого совпадения;
--context-separator — разделять несмежные строки контекста в выходных данных;
-c, --count — показывать количество строк, соответствующих заданным шаблонам для каждого искомого файла;
--count-matches — показывать количество отдельных совпадений с заданными шаблонами для каждого искомого файла;
--crlf — обрабатывать CRLF (\r \ n) как символ завершения строки, а не просто \n;
--debug — показывать сообщения отладки;
--dfa-size-limit — верхний предел размера регулярного выражения DFA;
-E, --encoding — использовать кодировку текста для всех искомых файлов;
-f, --file — искать по одному шаблону из файла на строку;
--files — распечатать каждый файл, в котором будет выполняться поиск;
-l, --files-with-matches — распечатать только те пути, которые имеют хотя бы одно совпадение;
--files-without-match — распечатать только те пути, которые содержат нулевые совпадения;
-F, --fixed-strings — определять рисунок как литеральную строку, а не регулярное выражение;
-L, --follow — переходить по символическим ссылкам во время проверки каталогов;
-g, --glob — включать или исключать файлы и каталоги для поиска;
--glob-case-insensitive — обрабатывать шаблоны, заданные с помощью флага -g / --glob, без учёта регистра;
--heading — выводить путь к файлу;
--hidden — выполнять поиск скрытых файлов и каталогов;
--iglob — включать файлы и каталоги в поиск с учётом регистра;
-i, --ignore-case — игнорировать регистры символов при поиске;
--ignore-file — указывать файл (файлы), содержащие шаблоны, которые будут использоваться для игнорирования файлов во время поиска;
--ignore-file-case-insensitive — то же, что и --ignore-file, но шаблоны в этом файле будут применяться без учёта регистра;
--include-zero — включать в вывод результат поиска, даже если найденная строка отсутствует (например, для пустых файлов);
-v, --invert-match — выводить только те строки, которые не соответствуют заданному шаблону (инверсия совпадений);
--json — выводить результаты поиска в формате JSON;
-n, --line-number — добавлять к каждому найденному совпадению номер строки, в которой было найдено это совпадение;
-x, --line-regexp — искать совпадения только среди целых строк, игнорируя различные подстроки;
-M, --max-columns — устанавливать максимальное количество отображаемых столбцов (символов) для всех строк в выводе;
--max-columns-preview — аналогично -M, используется для предварительного просмотра, ограничивая количество видимых столбцов;
-m, --max-count — ограничивать общее количество совпадений, которые будут выводиться в результате поиска;
--max-depth — задать максимальную глубину обхода каталогов, т.е. сколько уровней директорий будет обходить утилита;
--max-filesize — ограничивать размер обрабатываемых файлов (при превышении указанного размера файл будет игнорироваться);
--mmap — использовать память для отображения файлов;
-U, --multiline — включать режим поиска по многострочным совпадениям, используется для текста, который может находиться на нескольких строках;
--multiline-dotall — включать режим поиска по многострочным совпадениям с учётом всех символов;
--no-config — отключать использование конфигурационных файлов ripgrep;
-I, --no-filename — подавлять вывод имён файлов при выводе результатов поиска, если нужно получить только совпадения без указания, в каких файлах они были найдены;
--no-heading — отключать вывод заголовков (имён файлов) перед результатами поиска;
--no-ignore — выполнять поиск по всем файлам и директориям, независимо от правил игнорирования;
-N, --no-line-number — отключать вывод номеров строк при совпадении;
--no-messages — подавлять вывод информационных сообщений, таких как предупреждения об отсутствии файлов или о том, что некоторые файлы были проигнорированы;
--no-mmap — отключать использование отображения файлов в память при поиске;
--no-pcre2-unicode — отключать поддержку юникодных символов в регулярных выражениях с использованием библиотеки PCRE2;
--no-require-git — позволять использовать ripgrep без необходимости находиться в каталоге Git или проекте, управляемом системой контроля версий;
--no-unicode — отключать поддержку символов Unicode в выводе, что может быть полезно для консольных эмуляторов, которые не поддерживают или неправильно отображают UTF-8;
-0, --null — использовать нулевой байт в качестве разделителя между именами файлов в выводе;
--null-data — аналогично -0, но используется во время обработки входных данных;
--one-file-system — ограничивать поиск только текущей файловой системой, что предотвращает переход через смонтированные файловые системы, такие как сетевые или внешние диски;
-o, --only-matching — выводить только совпадающую часть строки, а не всю строку;
--passthru — позволять вывести строки, которые были найдены, но не соответствуют заданному шаблону;
--path-separator — задать символ-разделитель для путей в выводе;
-P, --pcre2 — включать поддержку регулярных выражений PCRE2, что позволяет использовать более сложные регулярные выражения при выполнении поиска;
-p, --pretty — выводить результаты в красивом формате (псевдоним для --color=always --heading --line-number);
-q, --quiet — отключить вывод результатов и сообщений об ошибках, прекратить поиск, если в файле найдено соответствие;
--regex-size-limit — установить лимит на размер регулярного выражения;
-e, --regexp — указать регулярное выражение для поиска;
-r, --replace — заменить найденные совпадения на указанный текст;
-z, --search-zip — искать в ZIP-архивах и других сжимаемых файлах;
-S, --smart-case — поиск выполняется без учёта регистра;
--sort — сортировать выводимые результаты по определённому критерию;
--sortr — сортировать результаты поиска;
--stats — вывести статистику о результатах поиска, включая количество найденных совпадений и время выполнения;
-a, --text — обрабатывать двоичные файлы как текст;
-j, --threads — указывать число потоков, которое будет использовано для параллельной обработки;
--trim — обрезать лишние пробелы в начале и конце строк результатов, улучшая читаемость;
-t, --type — задать тип файлов для поиска, что позволяет ограничить поиск определённым форматом файлов (например, только .txt или .md);
--type-add — добавить новый тип файлов, который можно использовать в команде поиска;
--type-clear — очистить ранее определённые типы файлов, вернуть настройки по умолчанию;
--type-list — выводить список доступных типов файлов, помогает выбрать, какие типы следует использовать в поиске;
-T, --type-not — исключить указанные типы файлов из процесса поиска;
-u, --unrestricted — отключить все ограничения, которые могут применяться к поиску, включая ограничения на типы файлов и размеры;
-V, --version — вывести версию утилиты ripgrep;
--vimgrep — вывести результаты поиска в формате, совместимом с vim, что позволяет удобнее обрабатывать результаты в текстовом редакторе Vim;
-H, --with-filename — вывести имя файла перед совпадениями, даже если в поиске участвует только один файл;
-w, --word-regexp — искать только по целым словам, игнорируя частичные совпадения.
Позиционные аргументы
Шаблон
Шаблон — регулярное выражение, используемое для поиска. Для сопоставления шаблона, начинающегося с тире, используйте опцию -e /--regexp.
Путь
Путь — файл или каталог для поиска. Поиск в каталогах выполняется рекурсивно. Пути, указанные явно в командной строке, переопределяют glob и игнорируют правила.
Примеры использования
Рассмотрим примеры для нескольких основных опций утилиты ripgrep:
1. Опция -i, --ignore-case:
rg -i "so" ./3d.txt
Например, если файл ./3d.txt содержит следующие данные:
Sun of the sleepless! Melancholy star! Whose tearful beam glows tremulously far, That show’st the darkness thou canst not dispel, How like art thou to Joy remembered well! So gleams the past, the light of other days, Which shines, but warms not with its powerless rays; A night-beam Sorrow watcheth to behold, Distinct, but distant – clear, but oh, how cold! George Gordon Byron
Результат поиска (без учета регистра) строк, в которых встречается "so" в файле ./3d.txt:
6:So gleams the past, the light of other days, 8:A night-beam Sorrow watcheth to behold,
2. Опция -w, --word-regexp:
rg -w "So" ./3d.txt
Результат поиска (с учетом регистра) только полных слов "So" в файле ./3d.txt:
6:So gleams the past, the light of other days,
3. Опция -n, --line-number:
rg -n "to" ./3d.txt
Пример выводит номера строк, в которых найдено совпадение с текстом "to" в файле ./3d.txt.
4:How like art thou to joy remember'd well! 8:A night-beam Sorrow watcheth to behold,
4. Опция -l, --files-with-matches:
rg -l "a" /home/user/Документы
Пример выводит список файлов в каталоге /home/user/Документы, в которых найдены строки, содержащие "a".
/home/user/Документы/sample1.json /home/user/Документы/3d.txt
5. Опция -c, --count:
rg -c "s" ./3d.txt
Пример выводит только количество строк, содержащих совпадения с "s" в файле ./3d.txt.
6
6. Опция -A, --after-context <параметр>:
rg -A 3 "the" ./3d.txt
Пример выводит 3 строки после каждого совпадения с "the" в файле ./3d.txt:
1:Sun of the sleepless! Melancholy star! 2-Whose tearful beam glows tremulously far, 3:That show’st the darkness thou canst not dispel, 4-How like art thou to Joy remembered well! 5- 6:So gleams the past, the light of other days, 7-Which shines, but warms not with its powerless rays; 8-A night-beam Sorrow watcheth to behold, 9-Distinct, but distant – clear, but oh, how cold!
7. Опция -v, --invert-match:
rg -v "to" ./3d.txt
Пример выводит строки из файла ./3d.txt, которые не содержат совпадения с "to".
1:Sun of the sleepless! Melancholy star! 2:Whose tearful beam glows tremulously far, 3:That show’st the darkness thou canst not dispel 5: 6:So gleams the past, the light of other days, 7:Which shines, but warms not with its powerless rays; 9:Distinct, but distant – clear, but oh, how cold! 10: 11:George Gordon Byron
8. Опция -C, --context <параметр>:
rg -C 2 "warms" ./3d.txt
Пример выводит 2 строки ДО и 2 строки ПОСЛЕ каждого совпадения с "warms" в файле ./3d.txt:
5- 6-So gleams the past, the light of other days, 7:Which shines, but warms not with its powerless rays; 8-A night-beam Sorrow watcheth to behold, 9-Distinct, but distant – clear, but oh, how cold!
9. Опция -F, --fixed-strings:
rg -F "like art" ./3d.txt
Пример выполнит поиск точного текста "like art" в файле ./3d.txt, не интерпретируя его как регулярное выражение:
4:How like art thou to Joy remembered well!
10. Опция -s, --case-sensitive:
rg -s "am" ./3d.txt
Пример выполнит поиск строки "am" в файле ./3d.txt, учитывая регистр символов (по умолчанию):
2:Whose tearful beam glows tremulously far, 6:So gleams the past, the light of other days, 8:A night-beam Sorrow watcheth to behold,
11. Опция -L, --follow:
rg -L "no" /home/user/Документы
Пример выполнит поиск в файлах в указанном каталоге /home/user/Документы, следуя символическим ссылкам:
/home/user/Документы/sample1.json 4:That show’st the darkness thou canst not dispel, 8:Which shines, but warms not with its powerless rays; /home/user/Документы/3d.txt 3:That show’st the darkness thou canst not dispel, 7:Which shines, but warms not with its powerless rays;
12. Опция -u, --unrestricted:
rg -u "of" ./3d.txt
Пример отключит "умный" поиск и все ограничения, которые могут применяться к поиску, и выполнит точное сопоставление с "of" в файле ./3d.txt.
1:Sun of the sleepless! Melancholy star! 6:So gleams the past, the light of other days,
13. Опция -V, --version:
rg --version
Команда выводит номер версии ripgrep.
ripgrep 13.0.0
14. Опция --type-list:
rg --type-list
Пример выводит список всех известных типов файлов, которые ripgrep может обрабатывать.
agda: *.agda, *.lagda aidl: *.aidl amake: *.bp, *.mk asciidoc: *.adoc, *.asc, *.asciidoc asm: *.S, *.asm, *.s asp: *.ascx, *.ascx.cs, *.ascx.vb, *.aspx, *.aspx.cs, *.aspx.vb ats: *.ats, *.dats, *.hats, *.sats avro: *.avdl, *.avpr, *.avsc awk: *.awk bazel: *.BUILD, *.bazel, *.bazelrc, *.bzl, BUILD, WORKSPACE bitbake: *.bb, *.bbappend, *.bbclass, *.conf, *.inc brotli: *.br buildstream: *.bst bzip2: *.bz2, *.tbz2 c: *.[chH], *.[chH].in, *.cats cabal: *.cabal cbor: *.cbor [...] vimscript: *.vim webidl: *.idl, *.webidl, *.widl wiki: *.mediawiki, *.wiki xml: *.dtd, *.rng, *.sch, *.xhtml, *.xjb, *.xml, *.xml.dist, *.xsd, *.xsl, *.xslt xz: *.txz, *.xz yacc: *.y yaml: *.yaml, *.yml yang: *.yang z: *.Z zig: *.zig zsh: *.zsh, .zlogin, .zlogout, .zprofile, .zshenv, .zshrc, zlogin, zlogout, zprofile, zshenv, zshrc zstd: *.zst, *.zstd
15. Опция --sort <параметр>:
rg --sort accessed "ss" /home/user/Документы
Пример позволяет сортировать файлы по заданному критерию ("path", "modified", "accessed", "created", "none"):
/home/user/Документы/3d.txt 1:Sun of the sleepless! Melancholy star! 3:That show’st the darkness thou canst not dispel, 7:Which shines, but warms not with its powerless rays; /home/user/Документы/sample1.json 2:Sun of the sleepless! Melancholy star! 4:That show’st the darkness thou canst not dispel, 8:Which shines, but warms not with its powerless rays;
16. Опция -m, --max-count <параметр>:
rg -m 10 "beam" /home/user/Документы
Пример останавливает поиск в каждом файле указанного каталога после заданного числа совпадений:
2:Whose tearful beam glows tremulously far, 8:A night-beam Sorrow watcheth to behold,
17. Опция --color <параметр>:
rg --color always "to" ./3d.txt
Пример использует цветовое выделение для совпадающих строк ("always", "ansi", "auto","never").
4:How like art thou to Joy remembered well! 8:A night-beam Sorrow watcheth to behold,
Эти примеры показывают разнообразие опций для работы с текстовыми данными и их возможности для поиска с помощью ripgrep.
Дата последнего изменения: 24.09.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.