danielecook
5/25/2017 - 7:35 PM

Generate run length encoding of a string in AWK

Generate run length encoding of a string in AWK


function rle(in_string) {
    # Generate Run Length Encoding
    cp = ""; j = 0; out = "";
    for(i=1; i <= length(in_string); i++) {
            if ( cp == substr(in_string, i, 1) ) {
            j++; 
            } else {
                if ((i > 1 && j > 2)) {
                    out = out j cp;
                } else {
                    out = out cp;
                }
            j = 1
        }
        cp = substr(in_string, i, 1)
    }

    if (i - 1 == length(in_string) && j > 2) {
        out = out j cp;
    } else if (j > 1) {
        out = out cp cp
    } else {
        out = out cp;
    }
    return out;
}