grep

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
GNU grep
Тип

утилита UNIX

Разработчик

Проект GNU

Операционная система

Linux, Mac OS, Solaris и Windows

Языки интерфейса

Английский и другие

Аппаратная платформа

IA-32, x86-64, PowerPC и другие

Последняя версия

2.20 (3 июня 2014)

Состояние

Активный

grep — утилита командной строки, которая находит на вводе строки, отвечающие заданному регулярному выражению, и выводит их, если вывод не отменён специальным ключом. Название представляет собой акроним английской фразы «search globally for lines matching the regular expression, and print them» — «искать везде строки, соответствующие регулярному выражению, и выводить их».

Изначально была создана для операционной системы UNIX.

Существуют модификации grep: egrep (с обработкой расширенных регулярных выражений), fgrep (трактующая символы $*[]^|()\ буквально), rgrep (с включённым рекурсивным поиском). Как сказано в руководстве man (с точностью до перевода) «egrep — то же самое, что grep -E. fgrep — то же самое, что grep -F. rgrep — то же самое, что grep -r».

Синтаксис[править | править вики-текст]

Для отображения краткого описания команды, используется ключ --help:

root@old:/# grep --help

Использование: grep [ПАРАМЕТР]... ШАБЛОН [ФАЙЛ]... Поиск ШАБЛОНА в каждом ФАЙЛЕ или в стандартном вводе.

По умолчанию, ШАБЛОН представляет собой простое регулярное выражение (BRE).


Примеры[править | править вики-текст]

Пример: вывести из файла «words.txt» все строки, начинающиеся с буквы «a»:

    grep '^a' 'words.txt'

Пример: вывести только имена файлов из каталога /etc, в которых встречается строка «my_regex» :

    grep -l 'my_regex' /etc/*

Пример: из результата команды uptime вывести только загрузку системы (удобно для записи в файл):

    uptime | grep -o 'load average.*'

Пример: Просмотр конфигурационных файлов без строк-комментариев и пустых строк:

    cat /usr/src/sys/i386/conf/GENERIC | grep -v '^#' | sed '/^$/d' | more
    cpu             I486_CPU
    cpu             I586_CPU
    cpu             I686_CPU
    ident           GENERIC
    makeoptions     DEBUG=-g                # Build kernel with gdb(1) debug symbols
    options         SCHED_4BSD              # 4BSD scheduler
    options         PREEMPTION              # Enable kernel thread preemption
    options         INET                    # InterNETworking
    options         INET6                   # IPv6 communications protocols
    options         SCTP                    # Stream Control Transmission Protocol
    options         FFS                     # Berkeley Fast Filesystem
    options         SOFTUPDATES             # Enable FFS soft updates support
    options         UFS_ACL                 # Support for access control lists

Расширение предыдущего примера с учетом пробелов, табуляций и различных символов маркировки комментариев.

   cat program.conf | grep -ve "#|^$" | less

Пример: Фильтр процессов без вывода самой команды grep, например, если ищем bash:

    ps -aef | grep '[b]ash'
    ps -aef | grep -v 'grep' | grep bash

grep -f template.txt data.txt - сравнить два файла и вывести совпадающие строки.

grep -f -v template.txt data.txt - сравнить два файла и вывести несовпадающие строки.

См. также[править | править вики-текст]

Литература[править | править вики-текст]

Ссылки[править | править вики-текст]