Использование команды grep в Linux - примеры

grep — утилита командной строки, которая находит на вводе строки,
отвечающие заданному регулярному выражению, и выводит их, если вывод не
отменён специальным ключом.

Синтаксис

Синтаксис может быть следующим:

grep 'word' filename
grep 'word' file1 file2 file3
grep 'string1 string2'  filename
cat otherfile | grep 'something'
command | grep 'something'
command option1 | grep 'data'
grep --color 'data' fileName

Поиск по файлу

Чтобы выполнить поиск пользователя boo в файле /etc/passwd запустите:

$ grep boo /etc/passwd

Вывод будет примерно таким:

boo:x:1000:1000:boo,,,:/home/boo:/bin/ksh

Так же вы можете выполнить регистронезависимый поиск строки boo
(например, bOo, Boo, BOO и т.п.):

$ grep -i "boo" /etc/passwd

Рекурсивный поиск

Можно искать во всех файлах в каталоге:

$ grep -r "192.168.1.5" /etc/

или

$ grep -R "192.168.1.5" /etc/

Пример ла, в котором встречается искомая строка (например,
/etc/ppp/options). Такое поведение можно отключить, т.е. grep не будет
вставлять в результаты поиска имена файлов, добавив ключ -h:

$ grep -h -R "192.168.1.5" /etc/

или

$ grep -hR "192.168.1.5" /etc/

Пример вывода:

# ms-wins 192.168.1.50
# ms-wins 192.168.1.51
addresses1=192.168.1.5;24;192.168.1.2;

Использование grep для поиска только слов

Если вы ищете boo, то grep найдет и такое сочетание fooboo, boo123,
123boofoo и т.п. Для того чтоб grep нашел именно слово boo можно указать
ключ -w:

$ grep -w "boo" file

Поиск двух разных слов

$ egrep -w 'word1|word2' /path/to/file

Подсчет количества

grep может посчитать количество вхождений слова в файл:

$ grep -c 'word' /path/to/file

Опция -n позволит вывести пронумерованные строки из файла номером этой
строки:

$ grep -n 'root' /etc/passwd

Пример вывода:

1:root:x:0:0:root:/root:/bin/bash
1042:rootdoor:x:0:0:rootdoor:/home/rootdoor:/bin/csh
3319:initrootapp:x:0:0:initrootapp:/home/initroot:/bin/ksh

Инвертированный вывод

Вы можете использовать параметр -v для инвертирования вывода, т.е.
вывести все строки кроме тех, в которых встречается искомое слово:

$ grep -v bar /path/to/file

Unix / Linux конвеер и grep

grep можно комбинировать с конвеером
(pipe).
Этот пример выведет имена жестких дисков:

# dmesg | egrep '(s|h)d[a-z]'

Показать модель CPU:

# cat /proc/cpuinfo | grep -i 'Model'

Эта же команда может быть выполнена по другому без pipe:

# grep -i 'Model' /proc/cpuinfo

Пример вывода:

model       : 30
model name  : Intel(R) Core(TM) i7 CPU       Q 820  @ 1.73GHz
model       : 30
model name  : Intel(R) Core(TM) i7 CPU       Q 820  @ 1.73GHz

Вывести только список файлов

Передав параметр -l можно вывести только имена файлов:

$ grep -l 'main' *.c

И, наконец, можно вывести результат с подсветкой:

$ grep --color vivek /etc/passwd

Read more

🔄 Своя Dropbox-альтернатива: Syncthing

🔄 Своя Dropbox-альтернатива: Syncthing

🧠 Зачем? Облачные сервисы — удобно, но: * не хочется платить Google/Dropbox за хранение своих файлов * хочется моментально синхронизировать фото, документы и заметки между устройствами * и делать это на своём сервере, без отправки данных «в облако» 👉 Решение — Syncthing: децентрализованный, зашифрованный, open source-синк между любыми устройствами. 🚀 Что ты получишь? * 📂 Автосинк папок между сервером,

🎧 Свой подкаст-сервер за 5 минут: Podgrab

🎧 Свой подкаст-сервер за 5 минут: Podgrab

✨ Зачем? Подкасты — отличный способ учиться, развлекаться и быть в курсе мира. Но что, если: * Хочется слушать подкасты офлайн * Хочется архивировать любимые шоу * Не устраивают сторонние сервисы, реклама и трекеры Решение: Podgrab — простой подкаст-граббер, который автоматически скачивает новые выпуски с любого RSS. А в связке с Audiobookshelf ты получаешь полноценный медиасервер.

Безопасное управление конфигурациями в Ansible: Полное руководство по использованию rescue и always

Безопасное управление конфигурациями в Ansible: Полное руководство по использованию rescue и always

Введение: Почему это важно В мире DevOps и системного администрирования существует простое правило: всё ломается. Особенно в самый неподходящий момент. Когда вы изменяете конфигурацию критического сервиса (например, Nginx), цена ошибки может быть очень высока — от простого даунтайма до потери данных. Ansible предлагает элегантное решение для безопасного внесения изменений через механизм

Использование ~/.ssh/authorized_keys для управления входящими SSH-соединениями

Использование ~/.ssh/authorized_keys для управления входящими SSH-соединениями

Файл ~/.ssh/authorized_keys позволяет настроить команды, которые будут выполняться при входящих SSH-соединениях. Это полезный инструмент для управления доступом и обеспечения безопасности, особенно при работе с резервным копированием данных. Настройка резервного копирования с использованием authorized_keys В данном примере рассматривается использование authorized_keys для настройки резервного копирования базы данных Bacula