Вы раньше использовали grep? В большинстве случаев основной трюк с grep может сделать большую часть работы. Однако grep предлагает множество способов выполнить поиск и настроить вывод для более удобной версии. В этой статье давайте проверим использование команды grep.
Использование grep
Проверка существования
Если вы используете какой-либо дистрибутив Linux, значит, у вас уже установлен grep. Выполните следующую команду в терминале.
grep --version
Эта команда используется для отображения версии установленной на данный момент grep. Теперь нам нужен демонстрационный файл. В моем случае я создам текстовый файл, включающий все установленные пакеты в моей системе.
Основы
Основное использование grep следует следующей структуре.
grepИли, для облегчения понимания, используйте этот.
grepВ этом случае grep выполнит поиск в файле и распечатает все строки, содержащие шаблон (условие поиска).
grep python ~ / Рабочий стол / PackageList.текст
Grep выполнил поиск в файле «PackageList.txt », который я сгенерировал ранее, и распечатал все строки, содержащие« python ».
Эту же операцию можно выполнить другим способом. Посмотрите следующий пример.
кошка ~ / Рабочий стол / PackageList.txt | grep python
Здесь с помощью команды «cat» я отправил содержимое файла «PackageList.txt »в grep. Используя вывод cat, grep выполнил поиск и распечатал строки, содержащие поисковый запрос.
А теперь самое интересное. Вы можете буквально так сложить несколько команд grep.
кошка ~ / Рабочий стол / PackageList.txt | grep - | grep p | grep python
Первый grep фильтрует до строк с дефисом, второй фильтрует до строк с p, а последний grep фильтрует до строк с python. Имеет смысл?
Чувствительность к регистру
При поиске важным вопросом является чувствительность к регистру. По умолчанию grep чувствителен к регистру.
Например, поиск «Python» не даст никаких результатов.
кошка ~ / Рабочий стол / PackageList.txt | grep Python
Чтобы сделать регистр grep «нечувствительным», добавьте следующий параметр.
кошка ~ / Рабочий стол / PackageList.txt | grep -i Python
Поиск файлов
Допустим, у вас есть каталог с множеством текстовых файлов. Ваша цель - определить файлы, содержащие или не содержащие шаблон (поисковый запрос).
Я считаю этот метод весьма полезным при поиске в куче файлов журнала. Поскольку у меня нет времени открывать и проверять каждый файл вручную, у меня есть команда grep, которая сделает эту работу за меня.
Для вывода списка файлов, содержащих совпадение, используйте флаг «-l».
grep -l
Как следует из результатов, термин «питон» присутствует во всех 3 файлах в каталоге «Рабочий стол».
Для вывода списка файлов без совпадений используйте флаг «-L».
grep -L
"Не совпадает.txt »- единственный файл, в котором отсутствует термин« python ».
Перевернутый поиск
По умолчанию grep печатает только строки с совпадающим шаблоном, справа? Пришло время повернуть вспять процесс. На этот раз мы будем печатать только строки БЕЗ соответствующего шаблона.
Просто передайте команду grep с параметром -v.
кошка ~ / Рабочий стол / PackageList.txt | grep -i -v Python
Печатные строки до / после матча
По умолчанию grep будет печатать только строку, соответствующую шаблону поиска. Используя эту технику, вы также можете указать grep печатать строки до / после совпадения.
Для печати строк перед матчем используйте следующую структуру.
grep -B
Здесь 5 - это строка числа, которую grep напечатает ДО соответствующей строки.
Для печати строк после матча используйте следующий.
grep -A
Как насчет печати до и после совпадающей строки? В этом случае используйте флаг «-C».
grep -C
Номер строки
Когда grep показывает вывод, он не упоминает номер строки. Для соответствующего номера (ов) строки используйте флаг «-n».
grep -n
Одно слово
Если используется флаг «-w», grep будет рассматривать шаблон как целое слово.
grep -w
Ограничение поиска grep
Grep позволяет указать количество строк для поиска в файле. Этот метод полезен, если вы имеете дело с большим файлом (например, системным журналом). Используйте флаг «-m».
grep -m
Рекурсивный поиск
Это одна из самых полезных функций, которые grep предлагает для интенсивного использования. Grep может рекурсивно искать каталог и находить все совпадения во всех файлах, с которыми он сталкивается.
grep -RИли же,
grep -r
Я часто использую эту рекурсивную функцию вместе с флагом «-l».
Тихий режим
Grep можно запускать в «тихом» режиме. При работе в «тихом» режиме grep не выводит никаких данных на терминал. Вместо этого он вернет 0 (по крайней мере, совпадение найдено) или 1 (совпадение не найдено).
grep -qэхо $?
Регулярное выражение
Grep также позволяет выполнять поиск по регулярным выражениям. Это добавляет совершенно новый уровень сложности и удобства использования grep в качестве инструмента поиска.
Например, вы можете использовать скобки для одновременного поиска слов «слишком» и «два».
кошка ~ / Рабочий стол / gpl-3.0.txt | grep t [wo] o
В следующем примере строка будет напечатана только в том случае, если совпадение происходит в самом начале строки.
grep ^ GNU ~ / Рабочий стол / gpl-3.0.текст
Что касается совпадения концовки, используйте этот.
grep you $ ~ / Рабочий стол / gpl-3.0.текст
Если вы хотите использовать регулярное выражение Perl, используйте флаг «-P». Он будет рассматривать шаблон как регулярное выражение Perl.
grep -PПоследние мысли
Grep предлагает массу способов настроить функцию поиска. Доступность регулярного выражения открывает новые горизонты для потенциального использования grep. Замечательно то, что вы можете использовать как общее, так и регулярное выражение Perl; в зависимости от того, с чем вы чувствуете себя комфортно.
Для наиболее подробного объяснения всегда обращайтесь к странице руководства.
человек grep
Ваше здоровье!