Thursday, 12 July 2018

awk match and return smallest matching part of a string

function smatch(str, re)
{
    start=1;
    len=length(str)+1;
    print "string length:" len
    i=0
    while (match(substr(str, 1, start+len-10), re)){
        i++;
        if (i>15) exit;
        start=RSTART;
        len=RLENGTH;
    }
    return substr(str, start, len);
}