Поиск по сайту:

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. Если у вас есть другие инструменты, которые, по вашему мнению, мы упустили, сообщите нам об этом в разделе комментариев.