Une façon consiste simplement à ajouter une coupe à ce que vous avez là-bas.
ping -c 4 www.stackoverflow.com | tail -1| awk '{print $4}' | cut -d '/' -f 2
Cela pourrait fonctionner pour vous :
ping -c 4 www.stackoverflow.com | sed '$!d;s|.*/\([0-9.]*\)/.*|\1|'
La solution suivante utilise uniquement Bash (nécessite Bash 3) :
[[ $(ping -q -c 4 www.example.com) =~ \ =\ [^/]*/([0-9]+\.[0-9]+).*ms ]] \
&& echo ${BASH_REMATCH[1]}
Pour l'expression régulière, c'est plus facile à lire (et à manipuler) si elle est stockée dans une variable :
regex='= [^/]*/([0-9]+\.[0-9]+).*ms'
[[ $(ping -q -c 4 www.example.com) =~ $regex ]] && echo ${BASH_REMATCH[1]}
ping -c 4 www.stackoverflow.com | tail -1| awk -F '/' '{print $5}'
fonctionnerait bien.
L'option "-F" est utilisée pour spécifier le séparateur de champs.