Подтвердить что ты не робот

Печать регулярных выражений в AWK

Есть ли способ распечатать регулярное выражение (но только соответствующую строку) с AWK?

4b9b3361

Ответ 1

Да, в awk используйте функцию match() и дайте ей необязательный параметр массива (a в моем примере). Когда вы это сделаете, 0-й элемент будет частью, которая соответствует регулярному выражению

$ echo "blah foo123bar blah" | awk '{match($2,"[a-z]+[0-9]+",a)}END{print a[0]}'
foo123

Ответ 2

An awk конкретный (в отличие от одного с использованием gawk) реализации решения:

$ echo "blah foo123bar blah" | awk 'match($0,/[a-z]+[0-9]+/) {print substr($0,RSTART,RLENGTH)}'
$ foo123

Ответ 3

Я использую эту конструкцию совсем немного:

    split(substr($0, match($0, /[0-9]+ [Bb]ytes/)), a, " ");
    print a[1];