6 лучших инструментов CLI для поиска текстовых данных с использованием регулярных выражений
В этом руководстве рассматривается некоторые из лучших инструментов командной строки, которые используются для поиска совпадающих строк или шаблонов в текстовых файлах. Эти инструменты обычно используются вместе с регулярными выражениями (сокращенно REGEX), которые представляют собой уникальные строки для описания шаблона поиска.
Без лишних слов, давайте углубимся.
1. Команда Греп
На первом месте стоит утилита grep – это аббревиатура от Global Regular Expression Print. Это мощный инструмент командной строки, который пригодится при поиске определенной строки или шаблона в файле. .
Grep по умолчанию поставляется с современными дистрибутивами Linux и дает вам возможность возвращать различные результаты поиска. С помощью grep вы можете выполнять широкий спектр функций, таких как:
- Поиск строк или совпадающих шаблонов в файле.
- Поиск строк или совпадающих шаблонов в файлах, сжатых Gzip.
- Подсчитайте количество совпадений строк.
- Выведите номера строк, которые содержат строку или шаблон.
- Рекурсивный поиск строки в каталогах.
- Выполните обратный поиск (т. е. отобразите результаты строк, не соответствующих критериям поиска).
- Игнорируйте чувствительность к регистру при поиске строк.
Синтаксис использования команды grep довольно прост:
grep pattern FILE
Например, чтобы найти строку «Linux» в файле, скажем, hello.txt, игнорируя регистрозависимость, выполните команду:
grep -i Linux hello.txt
Чтобы получить дополнительные параметры, которые можно использовать с grep, просто прочитайте нашу статью, в которой приведены более сложные примеры команд grep.
2. Команда СЭД
Sed – сокращение от Stream Editor – еще один полезный инструмент командной строки для манипулирования текстом в текстовом файле. Sed ищет, фильтрует и заменяет строки в заданном файле неинтерактивным способом.
По умолчанию команда sed выводит выходные данные в STDOUT (Standard Out), подразумевая, что результат выполнения выводится на терминал, а не на терминал. сохраняется в файле.
Команда Sed вызывается следующим образом:
sed -OPTIONS command [ file to be edited ]
Например, чтобы заменить все экземпляры «Unix» на «Linux», вызовите команду:
sed 's/Unix/Linux' hello.txt
Если вы хотите перенаправить вывод вместо того, чтобы печатать его на терминале, используйте знак перенаправления ( > )
, как показано.
sed 's/Unix/Linux' hello.txt > output.txt
Вывод команды сохраняется в файле output.txt, а не выводится на экран.
Чтобы узнать больше опций, которые можно использовать, еще раз посетите справочные страницы.
man sed
3. Команда подтверждения
Ack — это быстрый и портативный инструмент командной строки, написанный на Perl. Ack считается удобной заменой утилиты grep и выводит результаты в визуально привлекательной форме.
Команда Ack ищет в файле или каталоге строки, соответствующие критериям поиска. Затем он выделяет соответствующую строку в строках.
Ack позволяет различать файлы по их расширениям и, в определенной степени, по содержимому файлов.
Синтаксис команды подтверждения:
ack [options] PATTERN [FILE...]
ack -f [options] [DIRECTORY...]
Например, чтобы проверить поисковый запрос Linux, выполните:
ack Linux hello.txt
Инструмент поиска достаточно интеллектуален: если пользователь не предоставил файл или каталог, он ищет текущий каталог и подкаталоги по шаблону поиска.
В приведенном ниже примере файл или каталог не были предоставлены, но ack автоматически обнаружил доступный файл и выполнил поиск по предоставленному соответствующему шаблону.
ack Linux
Чтобы установить ack в вашей системе, выполните команду:
sudo apt install ack-grep [On Debian/Ubuntu]
sudo dnf install ack-grep [On CentOS/RHEL]
4. Команда AWK
Awk — это полноценный язык сценариев, а также инструмент для обработки текста и манипулирования данными. Он ищет файлы или программы, содержащие шаблон поиска. Когда строка или шаблон найдены, awk выполняет действие над совпадением или строкой и печатает результаты в STDOUT.
Шаблон AWK заключен в фигурные скобки, а вся программа заключена в одинарные кавычки.
Возьмем самый простой пример. Предположим, вы печатаете дату своей системы, как показано:
date
Предположим, вы хотите распечатать только первое значение — день недели. В этом случае передайте вывод в awk, как показано:
date | awk '{print $1}'
Чтобы отобразить последующие значения, разделите их запятой, как показано:
date | awk '{print $1,$2}'
Приведенная выше команда отобразит день недели и число месяца.
Чтобы получить дополнительные параметры, которые можно использовать с awk, просто прочитайте нашу серию команд awk.
5. Искатель серебра
Silver searcher – это кроссплатформенный инструмент поиска с открытым исходным кодом, похожий на ack, но с упором на скорость. Это упрощает поиск определенной строки в файлах в кратчайшие сроки:
Синтаксис:
ag OPTIONS search_pattern /path/to/file
Например, чтобы найти строку «Linux» в файле hello.txt, вызовите команду:
ag Linux hello.txt
Дополнительные параметры можно найти на страницах руководства:
man ag
6. Рипгреп
Наконец, у нас есть инструмент командной строки ripgrep. Ripgrep — кроссплатформенная утилита для поиска шаблонов регулярных выражений. Он намного быстрее, чем все ранее упомянутые инструменты поиска, и рекурсивно ищет в каталогах соответствующие шаблоны. С точки зрения скорости и производительности ни один другой инструмент не превосходит Ripgrep.
По умолчанию ripgrep пропускает двоичные/скрытые файлы и каталоги. Также имейте в виду, что по умолчанию он не будет искать файлы, которые игнорируются файлами .gitignore/.ignore/.rgignore.
Ripgrep также позволяет искать файлы определенных типов. Например, чтобы ограничить поиск файлами Javascript, выполните:
rg -Tsj
Синтаксис использования ripgrep довольно прост:
rg [OPTIONS] PATTERN [PATH...]
Например. Чтобы найти экземпляры строки ’Linux’ в файлах, расположенных внутри текущего каталога, выполните команду:
rg Linux
Чтобы установить ripgrep в вашей системе, выполните следующие команды:
sudo apt install ripgrep [On Debian/Ubuntu]
sudo pacman -S ripgrep [On Arch Linux]
sudo zypper install ripgrep [On OpenSuse]
sudo dnf install ripgrep [On CentOS/RHEL/Fedora]
Дополнительные параметры можно найти на страницах руководства:
man rg
Это одни из наиболее широко используемых инструментов командной строки для поиска, фильтрации и управления текстом в Linux. Если у вас есть другие инструменты, которые, по вашему мнению, мы упустили, сообщите нам об этом в разделе комментариев.