测试.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)
如何使用php 代码获取62.89mm/s
和62.89
作为输出并进行打印?grep
我正在使用这段代码,但它打印整行,例如: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
这将从数据中以开头的行中提取时间字符串。