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