¿Cómo puedo imprimir una variable específica de la salida de un comando usando grep?

¿Cómo puedo imprimir una variable específica de la salida de un comando usando grep?

Archivo prueba.txt:

Ext Temperatur:  210.0°
Avg.Speed(All):    62.89mm/s
Avg.Speed(Print):  49.99mm/s
Avg.Speed(Travel): 199.84mm/s
Overall Time (w/o Acceleration): 11:00:41 (39640.65sec)

¿Cómo puedo tomar 62.89mm/sy 62.89como resultados usando grepe imprimir con código php?

Estoy usando este código pero imprime la línea completa, por ejemplo:Avg.Speed(All): 62.89mm/s

<?php
$gcode_new = "grep -P 'Avg.Speed(All):' test.txt";

include('Net/SSH2.php');

$ssh = new Net_SSH2('XXX.61.XXX.227');
if (!$ssh->login('root', 'PASS')) {
    exit('Login Failed');
}
$target = $ssh->exec($gcode_new);

echo $target ;
?>

Actualización de preguntas:¿Cómo puedo copiar 11:00:41 de los datos anteriores que están asociados con "Tiempo total (sin aceleración):" Intenté usar el comando que se sugiere en la respuesta, pero recibo 11:00:41 (39640.65sec)aquí cómo puedo evitarlo (39640.65sec). $ grep -Po '(?<=Overall Time \(w/o Acceleration\): ).*' testjar.txt

Respuesta1

Utilice una aserción positiva de búsqueda hacia atrás con GNU grep:

$ grep -Po '(?<=Avg.Speed\(All\):    ).*' test.txt
62.89mm/s
$ grep -Po '(?<=Avg.Speed\(All\):    )[0-9\.]+' test.txt
62.89

Respuesta2

Usando sedpara tomar 62.89mm/sdatos de ejemplo haciendo coincidir y eliminando el inicio de la línea:

sed -n 's/^Avg\.Speed(All):[[:blank:]]*//p' test.txt

Para quitar también las mm/sunidades del final (esto elimina cualquier cosa que no sea dígitos del final):

sed -n '/^Avg\.Speed(All):[[:blank:]]*/{s///;s/[^[:digit:]]*$//p;}' test.txt

Para la pregunta de actualización:

sed -n 's/^Overall Time.*\(..:..:..\).*/\1/p' file

Esto extraería la cadena de tiempo de la línea que comienza Overall Timeen sus datos.

información relacionada