Если вы используете GNU awk и вместо /pattern/
в условной части используйте match
и третий аргумент match(string, regexp [, array])
, вы получите доступ к сопоставленному тексту, начальному индексу, длине и группам:
$ echo foobar |
gawk 'match($0, /(fo*)(b.*)/, a) {
print a[0],a[0,"start"],a[0,"length"] # 0 index refers to whole matched text
print a[2],a[2,"start"],a[2,"length"] # 1, 2, etc. to matched groups
}'
foobar 1 6
bar 4 3
Подробнее см. GNU awk для match
.