O comando gensub não altera a string. O resultado é uma saída da função.
Por favor, tente:
echo "random string random string mark: abcde random string random string" |
awk '{print(gensub(/^.*mark: (.{5,5}).*$/,"\1","g"))}'
Editar:
Acontece que o usuário precisa analisar a saída superior, o que isso faz (como o usuário pergunta):
top -b -n 1 -d 1 |
awk 'NR==1{print(gensub(/.*load average: ([0-9\.\, ]+).*$/,"\1","gs"))}'
Observação: ele permite tanto o ponto quanto a vírgula para códigos de idioma que usam uma vírgula como separador decimal.
Por favor, dê uma olhada no mpstat como aqui apresentado , pode ser melhor para suas necessidades.