Регулярные выражения

Шпаргалка по регулярным выражениям и работе в терминале

Введение в регулярные выражения

Регулярные выражения (regex) — это мощный инструмент для поиска и обработки текста по заданным шаблонам. Они представляют собой специальные строки, которые описывают правила сопоставления с последовательностями символов.

Для чего используются регулярные выражения?

  • Поиск информации в текстах, логах, файлах
  • Валидация данных (проверка формата email, телефона и т.д.)
  • Замена текста по сложным шаблонам
  • Анализ и извлечение данных из неструктурированных источников
  • Автоматизация обработки текстовых файлов

Как воспользоваться регулярными выражениями?

Регулярные выражения поддерживаются многими инструментами:

  1. В командной строке (через grep, sed, awk)
  2. В текстовых редакторах (Notepad++, VS Code, Sublime Text)
  3. В языках программирования (Python, Perl, JavaScript и др.)
  4. В системах управления базами данных

Основные инструменты для работы с regex в Linux:

Инструмент Назначение
grep / egrep Поиск текста по шаблону
sed Потоковый редактор для замены текста
awk / gawk Обработка структурированного текста
perl Скриптовый язык с мощной regex-поддержкой

Пример простого регулярного выражения:

\d{3}-\d{2}-\d{4}

Находит номера в формате XXX-XX-XXXX (например, 123-45-6789)

Основные команды терминала

Общие команды

  • # - Комментарий (все, что после этого символа, игнорируется)
  • $<пер> - Обращение к переменной с именем <пер>
  • clear - Очистка экрана терминала
  • Ctrl+L - Прокрутить экран так, чтобы текущая строка оказалась вверху окна
  • Ctrl+Z - Прервать текущий процесс
  • Ctrl+D - Зарегистрировать EOF (end of file - конец файла), часто используется для выхода из интерактивных программ
  • Ctrl+C - Послать сигнал SIGINT (signal interrupt) для прерывания процесса
  • | (пайп) - Перенаправление вывода одной команды на вход другой
  • \ - Экранирование специальных символов ([ ] \ ^ $ . | ? * + ( ))
  • > - Перенаправление стандартного вывода в файл (с перезаписью)
  • >> - Перенаправление стандартного вывода в файл (с дозаписью)
  • &> - Перенаправление всех потоков (stdout и stderr) в файл
  • ./ - Ссылка на текущую директорию

Утилиты для работы с файловой системой

cd - смена текущей директории

cd [каталог]

Шорткоты:

  • .. - родительский каталог
  • - - предыдущий каталог
  • / - корневая директория
  • ~ или просто cd - домашний каталог пользователя

Пример:

cd /opt/1cv8  # переходит в директорию установленной платформы 1С

pwd - показать текущую директорию

Выводит полный путь к текущей рабочей директории.

ls - список файлов и директорий

ls [опции] [каталог/шаблон]

Основные опции:

  • -1 - вывод списком (по одному файлу на строку)
  • -a - показать скрытые файлы
  • -F - добавить суффиксы для директорий (/) и исполняемых файлов (*)
  • -h - человекочитаемые размеры (KB, MB, GB)
  • -l - подробный вывод (права, владелец, размер, дата)
  • -R - рекурсивный обход поддиректорий
  • -r - обратный порядок сортировки
  • -S - сортировка по размеру
  • -t - сортировка по времени изменения

Пример:

ls -l  # подробный список файлов

tree - отображение структуры директорий

tree [опции]

Опции:

  • -a - показать все файлы, включая скрытые
  • -d - показывать только директории
  • -D - показывать дату последнего изменения
  • -f - показывать полные пути
  • -h - человекочитаемые размеры
  • -s - показывать размеры в байтах

Утилиты для работы с файлами

cat - вывод содержимого файла

cat [опции] [файл]

Опции:

  • -n - нумеровать все строки
  • -b - нумеровать только непустые строки

Пример:

cat -n /var/log/*/*  # выводит содержимое всех файлов в поддиректориях /var/log с нумерацией строк

less - постраничный просмотр файла

less [опции] [файл]

Опции:

  • -n - нумеровать строки

Пример:

less -n access.log  # просмотр лог-файла с нумерацией строк

head - первые строки файла

head [опции] [файл]

Опции:

  • -<n> - вывести первые n строк (по умолчанию 10)

Пример:

head -5 file.txt  # первые 5 строк файла

tail - последние строки файла

tail [опции] [файл]

Опции:

  • -<n> - последние n строк
  • -f - следить за изменениями файла в реальном времени

Пример:

tail -3 file.txt  # последние 3 строки
tail -f /var/log/syslog  # мониторинг системного лога

Поиск и обработка данных

find - поиск файлов

find [директория] [опции] [критерии] [шаблон]

Опции:

  • -type f - искать только файлы
  • -type d - искать только директории
  • -name - поиск по имени

Пример:

find /opt -name "*1cv8"  # поиск в /opt файлов и директорий, содержащих "1cv8"

grep/egrep - поиск по шаблону

egrep [опции] 'регулярное выражение' [файл]

Опции:

  • -h - не показывать имя файла
  • -i - игнорировать регистр
  • -c - подсчитать количество совпадений
  • -A<n> - показать n строк после совпадения
  • -B<n> - показать n строк до совпадения
  • -C<n> - показать n строк до и после

Пример:

egrep -i -A2 ',call,' * | head -n 5  # поиск ",call," без учета регистра + 2 строки после

sed - потоковый редактор

sed [опции] 'команды' [файл]

Основные команды:

  • s/поиск/замена/g - замена текста (g - глобально)
  • /паттерн/d - удаление строк

Пример:

echo "abc191a" | sed -r 's/bc//; s/a/z/g; s/[1-8]/@/'  # результат: z@91z

awk/gawk - обработка текста

gawk [опции] 'BEGIN{...} /шаблон/{...} END{...}' [файл(ы)]

Основные возможности:

  • -F - указать разделитель полей
  • Встроенные переменные: NR, NF, $0, $1 и т.д.
  • Ассоциативные массивы
  • Условные конструкции и циклы

Пример:

gawk -v RS='[0-9]+:[0-9]+.[0-9]+-' '/Ошибка/{print FILENAME " -> " RT $0}' *

Сортировка и форматирование

sort - сортировка строк

sort [опции] [файл]

Опции:

  • -k<n> - сортировать по n-му полю
  • -t<c> - использовать символ c как разделитель
  • -r - обратный порядок
  • -n - числовая сортировка
  • -b - игнорировать начальные пробелы

Пример:

sort -k2 -t\; -r file.txt  # сортировка по второму полю (разделитель ";") в обратном порядке

column - форматирование в колонки

column [опции] [файл]

Опции:

  • -t - создать таблицу
  • -s - указать разделитель

Пример:

echo "a,b,c,d" | column -t -s ,  # форматирование в таблицу

Регулярные выражения

Основные метасимволы

  • ^ - начало строки
  • $ - конец строки
  • . - любой символ (кроме перевода строки)
  • .* - ноль или более любых символов
  • .+ - один или более любых символов
  • [0-9] - любая цифра
  • [a-z] - любая буква в нижнем регистре
  • ? - предыдущий символ может отсутствовать
  • | - логическое "или"
  • () - группировка
  • {n,m} - от n до m повторений

Специальные последовательности

  • \d - цифра ([0-9])
  • \w - "словесный" символ ([a-zA-Z0-9_])
  • \s - пробельный символ (пробел, табуляция)
  • \n - перевод строки
  • \t - табуляция
  • \b - граница слова

Примеры полезных регулярных выражений

  1. Поиск email-адресов:
    \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b
  2. Поиск URL:
    https?://[^\s]+
  3. Поиск дат в формате DD-MM-YYYY:
    \b\d{2}-\d{2}-\d{4}\b

Полезные команды для мониторинга

  • w - информация о пользователях и загрузке CPU
  • top/htop - диспетчер задач
  • df -h - информация о дисковом пространстве
  • free -h - информация об использовании памяти
  • ping - проверка сетевого соединения
  • ifconfig/ip a - информация о сетевых интерфейсах
  • uname -a - информация о версии ядра

Эта шпаргалка содержит основные команды и регулярные выражения, которые помогут эффективно работать в терминале и обрабатывать текстовые данные. Для более сложных задач рекомендуется изучать документацию по каждому инструменту.

Комментарии

Популярные сообщения из этого блога

Удивительные коллекции 1С

Символы alt-кодов

Получение количества записей в таблицах MS SQL