Datei 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)
Wie kann ich mit PHP-Code Ausgaben erfassen 62.89mm/s
und ausdrucken?62.89
grep
Ich verwende diesen Code, aber er druckt die ganze Zeile, z. B.: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 ;
?>
Fragen-Update:Wie kann ich 11:00:41 aus den obigen Daten kopieren, die mit „Gesamtzeit (ohne Beschleunigung)“ verknüpft sind: Ich habe versucht, den in der Antwort vorgeschlagenen Befehl zu verwenden, erhalte aber hier eine Antwort .
11:00:41 (39640.65sec)
Wie kann ich das vermeiden?(39640.65sec)
$ grep -Po '(?<=Overall Time \(w/o Acceleration\): ).*' testjar.txt
Antwort1
Verwenden Sie eine positive Lookbehind-Assertion mit GNU grep:
$ grep -Po '(?<=Avg.Speed\(All\): ).*' test.txt
62.89mm/s
$ grep -Po '(?<=Avg.Speed\(All\): )[0-9\.]+' test.txt
62.89
Antwort2
Verwenden Sie sed
zum Auslesen 62.89mm/s
der Beispieldaten, indem Sie den Zeilenanfang abgleichen und löschen:
sed -n 's/^Avg\.Speed(All):[[:blank:]]*//p' test.txt
So entfernen Sie auch die mm/s
Einheiten am Ende (dadurch werden alle Nicht-Ziffern am Ende entfernt):
sed -n '/^Avg\.Speed(All):[[:blank:]]*/{s///;s/[^[:digit:]]*$//p;}' test.txt
Zur Update-Frage:
sed -n 's/^Overall Time.*\(..:..:..\).*/\1/p' file
Dadurch wird die Zeitzeichenfolge aus der Zeile extrahiert, die Overall Time
in Ihren Daten mit beginnt.