Регулярные выражения
Шпаргалка по регулярным выражениям и работе в терминале
Введение в регулярные выражения
Регулярные выражения (regex) — это мощный инструмент для поиска и обработки текста по заданным шаблонам. Они представляют собой специальные строки, которые описывают правила сопоставления с последовательностями символов.
Для чего используются регулярные выражения?
- Поиск информации в текстах, логах, файлах
- Валидация данных (проверка формата email, телефона и т.д.)
- Замена текста по сложным шаблонам
- Анализ и извлечение данных из неструктурированных источников
- Автоматизация обработки текстовых файлов
Как воспользоваться регулярными выражениями?
Регулярные выражения поддерживаются многими инструментами:
- В командной строке (через grep, sed, awk)
- В текстовых редакторах (Notepad++, VS Code, Sublime Text)
- В языках программирования (Python, Perl, JavaScript и др.)
- В системах управления базами данных
Основные инструменты для работы с 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
- граница слова
Примеры полезных регулярных выражений
- Поиск email-адресов:
\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b
- Поиск URL:
https?://[^\s]+
- Поиск дат в формате DD-MM-YYYY:
\b\d{2}-\d{2}-\d{4}\b
Полезные команды для мониторинга
w
- информация о пользователях и загрузке CPUtop
/htop
- диспетчер задачdf -h
- информация о дисковом пространствеfree -h
- информация об использовании памятиping
- проверка сетевого соединенияifconfig
/ip a
- информация о сетевых интерфейсахuname -a
- информация о версии ядра
Эта шпаргалка содержит основные команды и регулярные выражения, которые помогут эффективно работать в терминале и обрабатывать текстовые данные. Для более сложных задач рекомендуется изучать документацию по каждому инструменту.
Комментарии
Отправить комментарий