Estou ecoando a string porque o mpstat
do meu sistema é diferente do que você mostra na sua pergunta, mas deve funcionar se a saída for o que você postou.
<?
$string="the name of my server 2.19 2.21 2.30 2.26 2.22 2.20 2.14 2.09 2.07 0";
$output=system("echo $string | perl -ne '/^.+?\s+([\d\. ]+)/; print \"$1\"'");
echo "$output <br>";
?>
O script Perl está apenas procurando pelo maior número de dígitos, pontos decimais e espaços ( [\d\. ]+
) e imprimindo-o, que deve separar nomes de servidores dos dados com nomes de servidor arbitrários. Ele falhará se o nome do seu servidor terminar com um número, algo como foo bar 12
. Ele não tratará o 12
como parte do nome do servidor, mas como parte dos dados.
Se os nomes dos seus servidores nunca contiverem espaços (o que suponho que eles não possuam), você pode usar esta gawk
versão, se preferir:
<?
$string="thenameofmyserver 2.19 2.21 2.30 2.26 2.22 2.20 2.14 2.09 2.07 0";
$output=system("echo $string | gawk '{for(i=2; i<=NF; i++){printf \"%s \",$(i)}}'");
echo "$output <br>";
?>