Регулярные выражения (regexp или regex ) — это механизм, используемый, например, утилитами sed и awk для анализа и обработки текста (потокового или в файлах). В регулярных выражениях существует две группы символов - метасимволы (цифры, буквы), классы символов и спецсимволы, используемые для создания шаблонов при анализе текста.
[ ]
- перечень символов или диапазон символов (диапазон - с дефисом)
\
- экранирование спецсимволов для их интерпретации в качестве обычных
/
- разделитель
^
- начало строки
$
- конец строки
.
- любой символ, кроме переводов строки
|
- разделитель двух паттернов, логическое ИЛИ
?
- предыдущий символ встречается в строке не более одного раза (в т.ч. ни разу)
*
- предыдущий символ встречается в строке любое количество раз (в т.ч. ни разу)
+
- предыдущий символ встречается в строке один или более раз
( )
- группировка символов в один паттерн
{ }
- количество вхождений предшествующего символа (точное или диапазон)
[[:alpha:]]
— соответствует любому алфавитному символу, записанному в верхнем или нижнем регистре.
[[:alnum:]]
— соответствует любому алфавитно-цифровому символу, а именно — символам в диапазонах 0-9, A-Z, a-z.
[[:blank:]]
— соответствует пробелу и знаку табуляции.
[[:digit:]]
— любой цифровой символ от 0 до 9.
[[:upper:]]
— алфавитные символы в верхнем регистре — A-Z.
[[:lower:]]
— алфавитные символы в нижнем регистре — a-z.
[[:print:]]
— соответствует любому печатаемому символу.
[[:punct:]]
— соответствует знакам препинания.
[[:space:]]
— пробельные символы, в частности — пробел, знак табуляции, символы NL, FF, VT, CR.
# /home/tux/testfile
this is a test
This is a test
this is the test
where is the test?
test it now
test number 123
awk '/This/{print $0}' testfile
- поиск слова This и вывод соответствующей строки
awk '/this/{print $0}' testfile
- поиск слова this и вывод соответствующей строки
awk '/[Tt]his/{print $0}' testfile
- поиск слова this или This вывод соответствующей строки
awk '/^where/{print $0}' testfile
- вывод строк, в которых первым словом является where.
awk '/test$/{print $0}' testfile
- вывод строк, в которых последним словом является test.
awk '/\?/{print $0}' testfile
- вывод строк, в которых есть вопросительный знак (он экранирован символом \
).
awk '/[[:digit:]]/{print $0}' testfile
- вывод строк, в которых есть цифры.