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 и Call.

пример

[jerry]$ echo -e "Call\nTall\nBall\nSmall\nShall" | awk '/Call|Ball/'

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

Вывод

Call
Ball

Ноль или один случай

Соответствует нулю или одному вхождению предыдущего символа. Например, следующий пример соответствуетColour так же как Color. Мы сделалиu как необязательный символ, используя ?.

пример

[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

Группировка

Parentheses ()используются для группировки и символа | используется для альтернатив. Например, следующее регулярное выражение соответствует строкам, содержащим либоApple Juice or Apple Cake.

пример

[jerry]$ echo -e "Apple Juice\nApple Pie\nApple Tart\nApple Cake" | awk 
   '/Apple (Juice|Cake)/'

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

Вывод

Apple Juice
Apple Cake