В этом руководстве представлены некоторые из лучших инструментов командной строки, которые используются для поиска совпадающих строк или шаблонов в текстовых файлах.
Эти инструменты обычно используются вместе с регулярными выражениями (сокращенно REGEX), которые представляют собой уникальные строки для описания шаблона поиска.
Без лишних слов, давайте перейдем к делу.
1. Команда Grep
В первую очередь идет служебный инструмент grep – это аббревиатура от Global Regular Expression Print, мощный инструмент командной строки, который пригодится при поиске определенной строки или шаблона в файле.
Grep по умолчанию поставляется в современных дистрибутивах Linux и дает вам возможность возвращать различные результаты поиска.
С помощью grep вы можете выполнять широкий спектр функций, таких как:
- Искать строки или совпадающие шаблоны в файле.
- Искать строки или совпадающие шаблоны в файлах Gzip.
- Подсчитать количество совпадений строк.
- Вывести номера строк, содержащих строку или шаблон.
- Рекурсивный поиск строки в каталогах.
- Выполнить обратный поиск (т.е. отобразите результаты строк, не соответствующих критериям поиска).
- Игнорировать чувствительность к регистру при поиске строк.
Синтаксис использования команды grep довольно прост:
$ grep pattern FILE
$ grep -i itsecforu hello.txt
2. Команда sed
Sed – сокращение от Stream Editor – еще один полезный инструмент командной строки для управления текстом в текстовом файле.
Sed ищет, фильтрует и заменяет строки в заданном файле неинтерактивным образом.
По умолчанию команда sed выводит результат в STDOUT (стандартный вывод), подразумевая, что результат выполнения выводится на терминал, а не сохраняется в файле.
Команда Sed вызывается следующим образом:
$ sed -OPTIONS command [ file ]
$ sed 's/Unix/Linux' hello.txt
$ sed 's/Unix/Linux' hello.txt > output.txt
Вывод команды сохранится в файле output.txt, а не выведется на экран.
Чтобы узнать о других параметрах, которые можно использовать, еще раз ознакомьтесь с man-страницами.
$ man sed
3. Команда Ack
Ack – это быстрый и портативный инструмент командной строки, написанный на Perl.
Ack считается удобной заменой утилиты grep и выводит результаты в визуально привлекательной форме.
Команда Ack ищет в файле или каталоге строки, содержащие соответствие критериям поиска.
Затем он выделяет соответствующую строку.
Ack имеет возможность различать файлы на основе их расширений и, в определенной степени, содержимого в файлах.
Синтаксис команды Ack:
$ ack [options] PATTERN [FILE...] $ ack -f [options] [DIRECTORY...]
Например, чтобы найти слово itsecforu, выполните:
$ ack itsecforu hello.txt
Чтобы установить аск в вашей системе, выполните команду:
$ sudo apt install ack-grep [На Debian/Ubuntu] $ sudo dnf install ack-grep [На CentOS/RHEL]
4. Команда Awk
Awk – это полноценный язык скриптов, а также инструмент для обработки текста и управления данными.
Он ищет файлы или программы, содержащие шаблон поиска.
Когда строка или шаблон найдены, awk выполняет действие с совпадением или строкой и выводит результаты в STDOUT.
Шаблон AWK заключен в фигурные скобки, а вся программа заключена в одинарные кавычки.
Возьмем самый простой пример.
Предположим, вы выводите дату своей системы, как показано далее:
$ date
$ date | awk '{print $1}'
$ date | awk '{print $1,$2}'
5. Silver Searcher
Silver Searcher – это кроссплатформенный инструмент для поиска кода с открытым исходным кодом, похожий на ack, но с упором на скорость.
Он упрощает поиск определенной строки в файлах в кратчайшие сроки:
$ ag OPTIONS search_pattern /path/to/file
$ ag Linux hello.txt
Для дополнительных опций:
$ man ag