AWK очень мощный и эффективный в обработке регулярных выражений. Ряд сложных задач можно решить с помощью простых регулярных выражений. Любой эксперт командной строки знает силу регулярных выражений.
В этой главе рассматриваются стандартные регулярные выражения с подходящими примерами.
точка
Он соответствует любому отдельному символу, кроме символа конца строки. Например, следующий пример соответствует fin, fun, fan и т. Д.
пример
[jerry]$ echo -e "cat\nbat\nfun\nfin\nfan" | awk '/f.n/'
Выполнив приведенный выше код, вы получите следующий результат —
Выход
fun fin fan
Начало строки
Это соответствует началу строки. Например, в следующем примере печатаются все строки, начинающиеся с шаблона The .
пример
[jerry]$ echo -e "This\nThat\nThere\nTheir\nthese" | awk '/^The/'
Выполнив этот код, вы получите следующий результат —
Выход
There Their
Конец линии
Это соответствует концу строки. Например, в следующем примере печатаются строки, заканчивающиеся буквой n .
пример
[jerry]$ echo -e "knife\nknow\nfun\nfin\nfan\nnine" | awk '/n$/'
Выход
Выполнив этот код, вы получите следующий результат —
fun fin fan
Совпадает с набором символов
Используется для соответствия только одному из нескольких символов. Например, следующий пример соответствует шаблону Call и Tall, но не Ball .
пример
[jerry]$ echo -e "Call\nTall\nBall" | awk '/[CT]all/'
Выход
Выполнив этот код, вы получите следующий результат —
Call Tall
Эксклюзивный набор
В эксклюзивном наборе карат сводит на нет набор символов в квадратных скобках. Например, следующий пример печатает только Ball .
пример
[jerry]$ echo -e "Call\nTall\nBall" | awk '/[^CT]all/'
Выполнив этот код, вы получите следующий результат —
Выход
Ball
Внесение изменений
Вертикальная черта позволяет регулярным выражениям быть логически ИЛИ. Например, следующий пример печатает Ball and Call .
пример
[jerry]$ echo -e "Call\nTall\nBall\nSmall\nShall" | awk '/Call|Ball/'
Выполнив этот код, вы получите следующий результат —
Выход
Call Ball
Ноль или одно вхождение
Это соответствует нулю или одному вхождению предыдущего символа. Например, следующий пример соответствует цвету, а также цвет . Мы сделали вас необязательным персонажем, используя ? ,
пример
[jerry]$ echo -e "Colour\nColor" | awk '/Colou?r/'
Выполнив этот код, вы получите следующий результат —
Выход
Colour Color
Ноль или более вхождение
Это соответствует нулю или более вхождений предыдущего символа. Например, следующий пример соответствует ca, cat, catt и так далее.
пример
[jerry]$ echo -e "ca\ncat\ncatt" | awk '/cat*/'
Выполнив этот код, вы получите следующий результат —
Выход
ca cat catt
Одно или несколько вхождений
Это соответствует одному или нескольким вхождениям предыдущего символа. Например, приведенный ниже пример соответствует одному или нескольким вхождениям из 2 .
пример
[jerry]$ echo -e "111\n22\n123\n234\n456\n222" | awk '/2+/'
Выполнив приведенный выше код, вы получите следующий результат —
Выход
22 123 234 222
группирование
Круглые скобки () используются для группировки и символа | используется для альтернатив. Например, следующее регулярное выражение соответствует строкам, содержащим либо Apple Juice, либо Apple Cake .
пример
[jerry]$ echo -e "Apple Juice\nApple Pie\nApple Tart\nApple Cake" | awk '/Apple (Juice|Cake)/'
Выполнив этот код, вы получите следующий результат —