bash команда grep

grep  — Поиск файлов или строки в файле по шаблону.

grep "шаблон поиска" "file_name"

Допустим в папке /root у нас лежит три файла:
/root/.bash_history
/root/.bash_history
/root/test

-r Поиск рекурсивно по всем файлам в указанной директории. Пример:

#grep -r authorized /root

/root/.bash_history:mv authorized_keys authorized_keys2
/root/.bash_history:chmod 600 authorized_keys2
/root/test: authorized_keys2 test file



-h Не выводит имя файла при поиске по нескольким файлам. Пример:

#grep -rh authorized /root

mv authorized_keys authorized_keys2
chmod 600 authorized_keys2
authorized_keys2 test file


-l Выводит только имена файлов, в которых найдена строка. Если в файле есть несколько таких строк, то имя файла выводится только один раз. Пример:

#grep -rl authorized /root

/root/.bash_history
/root/test


-c Выводит количество найденных строк. Пример

#grep -с authorized /root/.bash_history

2


#grep -rlс authorized /root

3

-v Выводит все строки кроме содержащих указанный шаблон.

-i Игнорировать регистр при поиске. То есть если Вы указали шаблон поиска с маленьких букв, в результат
попадут также строки, где встречается этот шаблон с заглавными буквами.

-n Добаляет номер найденной строки в начало ее вывода.

-s Подавляет вывод ошибок о ненайденом файле, например.

-w Поиск шаблона как отдельного слова, например поиск по -w «auth» не будет включать в результат строки, где встречается «authentic», а только строки где есть отдельоне слово auth.

21 comments on “bash команда grep

  1. Vladimir 30.12.2014 01:50

    Подскажите, пожалуйста. Передо мной стоит такая задача:
    Необходимо разработать скрипт на языке Bash, принимающий первым параметром абсолютный путь до директории, в которой лежат некоторые файлы. Необходимо произвести поиск в файлах данной директории строк, содержащих последовательность символов. Последовательность символов передана скрипту во втором параметре. Результаты поиска скрипт должен выводить в стандартный поток вывода в виде «Имя_файла Номер_строки Найденная_строка»
    Как мне это реализовать? Достаточно ли одной команды grep?

  2. admin 15.01.2015 21:11

    grep -rn <последовательность> <путь к папке поиска>

    если без учета регистра — добавить клю ч «i»

  3. Apache 04.02.2015 11:59

    как используя grep ,найти и вывести в тексте только строки и пробелы?

  4. admin 04.02.2015 12:35

    опишите более детальо задачу. Какие строки пустые что-ли ? не совсем понял что вывести … представляете что значит «вывести пробелы» ? 🙂

  5. 2523523 09.04.2018 14:38

    А как получить вывод
    grep -iRI «n» /etc/
    но без учета строк, начинающихся с «;» ?

  6. admin 09.04.2018 16:07

    можно попробовать как-то так например:
    grep -iRIvl "^;" /etc/ | xargs grep -iRI "n"
    или так:
    for i in `grep -iRIvl "^;" /etc/`;do grep -iRI "n" $i ;done

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>