файл test.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)
Как я могу получить 62.89mm/s
и распечатать 62.89
выходные данные grep
с помощью PHP-кода?
Я использую этот код, но он печатает всю строку, например: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 ;
?>
Обновление вопроса:Как скопировать 11:00:41 из приведенных выше данных, которые связаны с «Общим временем (без ускорения):»? Пытался использовать команду, предложенную в ответе, но получаю 11:00:41 (39640.65sec)
здесь, как можно избежать (39640.65sec)
.
$ grep -Po '(?<=Overall Time \(w/o Acceleration\): ).*' testjar.txt
решение1
Используйте положительное утверждение ретроспективного просмотра с GNU grep:
$ grep -Po '(?<=Avg.Speed\(All\): ).*' test.txt
62.89mm/s
$ grep -Po '(?<=Avg.Speed\(All\): )[0-9\.]+' test.txt
62.89
решение2
Извлекаем данные из примера sed
, 62.89mm/s
сопоставляя и удаляя начало строки:
sed -n 's/^Avg\.Speed(All):[[:blank:]]*//p' test.txt
Чтобы также удалить mm/s
единицы измерения из конца (это удаляет все нецифровые символы из конца):
sed -n '/^Avg\.Speed(All):[[:blank:]]*/{s///;s/[^[:digit:]]*$//p;}' test.txt
Для обновления вопроса:
sed -n 's/^Overall Time.*\(..:..:..\).*/\1/p' file
Это позволит извлечь строку времени из строки, начинающейся с Overall Time
ваших данных.