Учебники

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

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)/'

Выполнив этот код, вы получите следующий результат —