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/s
y 62.89
como resultados usando grep
e 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 sed
para tomar 62.89mm/s
datos 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/s
unidades 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 Time
en sus datos.