arquivo teste.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)
Como posso capturar 62.89mm/s
e 62.89
como saídas usando grep
e imprimir com código php?
Estou usando este código, mas ele imprime a linha inteira, por exemplo: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 ;
?>
Atualização da pergunta:Como posso copiar 11:00:41 dos dados acima que estão associados a "Tempo total (sem aceleração):" Tentei usar o comando sugerido na resposta, mas recebendo 11:00:41 (39640.65sec)
aqui como posso evitar (39640.65sec)
.
$ grep -Po '(?<=Overall Time \(w/o Acceleration\): ).*' testjar.txt
Responder1
Use asserção lookbehind positiva com GNU grep:
$ grep -Po '(?<=Avg.Speed\(All\): ).*' test.txt
62.89mm/s
$ grep -Po '(?<=Avg.Speed\(All\): )[0-9\.]+' test.txt
62.89
Responder2
Usando sed
para obter 62.89mm/s
dados de exemplo combinando e excluindo o início da linha:
sed -n 's/^Avg\.Speed(All):[[:blank:]]*//p' test.txt
Para também retirar as mm/s
unidades do final (isso remove quaisquer não-dígitos do final):
sed -n '/^Avg\.Speed(All):[[:blank:]]*/{s///;s/[^[:digit:]]*$//p;}' test.txt
Para a pergunta de atualização:
sed -n 's/^Overall Time.*\(..:..:..\).*/\1/p' file
Isso extrairia a sequência de tempo da linha que começa Overall Time
em seus dados.