Регулярные выражения, часто сокращаемые до regex, — это мощный инструмент для сопоставления текста по шаблону. Понимание их является основой для освоения манипуляций с текстом в Linux. Хотя существует множество приложений для изучения Linux, погружение в основные концепции, такие как regular expression linux, — это самый быстрый путь к продвинутому владению Linux. Они используют специальные обозначения, некоторые из которых похожи на подстановочные знаки, такие как *.
Рассмотрим некоторые из наиболее распространенных операторов регулярных выражений, которые почти универсальны для языков программирования. В качестве примера мы будем использовать следующий текст:
sally sells seashells
by the seashore
Привязка к началу строки
Символ каретки ^ соответствует началу строки. Он гарантирует, что ваш шаблон появляется только в начале.
^by
Этот шаблон совпадет со строкой "by the seashore", но не со строкой "sally sells seashells".
Привязка к концу строки
Символ доллара $ соответствует концу строки. Это аналог привязки ^.
seashore$
Этот шаблон совпадет со строкой "by the seashore", потому что она заканчивается на "seashore".
Сопоставление любого одного символа
Точка . — это подстановочный знак, который соответствует любому одному символу.
b.
В нашем примере это совпадет с "by".
Использование скобок для наборов символов
Квадратные скобки [] позволяют указать набор символов для сопоставления. Это дает больше контроля, чем подстановочный знак ..
s[ae]lls
Это совпадет с "sells" и также совпадет с "salls".
Вы также можете использовать скобки, чтобы указать, что не следует сопоставлять. Когда каретка ^ является первым символом внутри скобок, она инвертирует набор, сопоставляя любой символ, кроме перечисленных.
s[^e]lls
Это совпадет с "salls", но не с "sells".
Наконец, скобки поддерживают диапазоны для эффективного определения большого набора символов.
d[a-c]g
Этот шаблон совпадет с "dag", "dbg" и "dcg". Имейте в виду, что диапазоны чувствительны к регистру. Например, [a-c] не совпадет с A, B или C.
Изучение этих операторов — один из лучших способов освоить эффективность командной строки Linux.